Postfix+Dovecotによるメールサーバーの構築

提供: Akionux-wiki
Share/Save/Bookmark
移動: 案内検索

概要

Postfix(ポストフィックス)はフリーソフトウェア・オープンソースソフトウェアのメール転送エージェント(MTA)である[1]。 Dovecot(ダヴコット)は、UNIX系のOS上で動作する、POP3とIMAPのサーバである[2]

PostfixとDovecotでメールの送受信のできる、いわゆるメールサーバーを構築できる。

ここでは、資料(例えば[3][4][5][6][7])と私自身がPostfixをSlackware Linux 14.0にインストールした結果に基づいてインストール手順を説明する。

また、サーバーでMaildir形式をコマンドラインから扱えないことから、Heirloom mailxを導入したので、おまけに付け加えた。

テスト環境

Slackware Linux x86_64 14.1

Postfix

postfixユーザー・グループの作成

# groupadd -g 200 postfix
# useradd -u 200 -d /dev/null -s /sbin/nologin -g postfix postfix -G mail

ダウンロード・インストール

ここでは、Postfixのバージョンは2.11.1を想定する。

$ wget http://mirror.postfix.jp/postfix-release/official/postfix-2.11.1.tar.gz
$ tar zxvf postfix-2.11.1.tar.gz
$ cd postfix-2.11.1
$ make
$ sudo make install
いろいろ質問される。詳しくはpostfix-2.11.1/INSTALLを参照。

SASLとTLSサポートを追加する

PostfixのSASLとTLSのサポートを有効にするには、ビルド時に特別にオプションを追加する必要がある[8]

先ほどのダウンロードしたpostfixのディレクトリで、

以前のビルドで残っているファイルがある場合のみ、

$ make tidy

make makefilesコマンドに引数を渡すことで必要な定義の書かれたmakeファイルを生成する[9](SASL_AUTHだけでなくCYRUS_SASLも必要[10]):

$ make makefiles CCARGS="-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -DUSE_TLS -I/usr/include/sasl" AUXLIBS="-lsasl2 -lssl -lcrypto"

すでにインストールした後の場合、

$ sudo make upgrade

新たにインストールする場合は、

$ sudo make install

SlackBuildによるインストール

SlackBuilds.orgの

network/postfix

のSlackBuildを使ってインストールしてもよい。 その際、SASLにdovecotを使うのがデフォルトとなっているので、cyrusの利用とデータベースにmysqlを使う場合、

sudo SASL=cyrus DATABASE=mysql ./postfix.SlackBuild

と実行する必要がある。

また、installpkgの実行は、インストールスクリプトで呼び出されるpostfixコマンドが/usr/sbinにあるためsudoで実行するとエラーがでるのでrootになってから実行する:

su -
installpkg /tmp/postfix-3.1.2-x86_64-1_SBo.tgz

パーミッションの修正

また、installpkgした後はパーミッションが適切でないものがあるので修正する必要がある。

# postfix set-permissions

設定がうまくいっているかチェックするには、

# postfix check

とする。

main.cf

/etc/postfix/main.cfで主な設定を行なう。

ホスト名・ドメイン

myhostname = mail.hogehoge.net
mydomain = hogehoge.net
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # メールの最終的な到着地とされるドメイン名

メールボックスの形式

Maildir形式を採用する場合、/etc/postfix/main.cfで次を設定:

home_mailbox = Maildir/

Maildir形式のメールボックス作成

  • 新規ユーザー用

新規ユーザー作成時にホームディレクトリへMaildir形式のメールボックスが作成されるようにする:

# mkdir -p /etc/skel/Maildir/{new,cur,tmp}
# chmod -R 700 /etc/skel/Maildir/

SMTP認証

SMTP認証を有効にするため、/etc/postfix/main.cfに次を設定[5]

smtpd_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_mechanism_filter = plain
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_destination

/etc/postfix/sasl_passwdを次のように作成する[11]

# vim /etc/postfix/sasl_passwd
# destination                   credentials
[mail.isp.example]              username:password
# Alternative form:
# [mail.isp.example]:submission username:password

root以外のユーザーが読めないようにパーミッションを設定しておく。

# chmod 700 /etc/postfix/sasl_passwd

さらに、ハッシュ化する。

# postmap /etc/postfix/sasl_passwd

saslauthd

SMTP-Authを有効にするために、saslauthdを起動させる。 次のような起動スクリプト/etc/rc.d/rc.saslauthdを作成した:

#!/bin/sh
#
# saslauthd start and stop script
#
#

SERVICENAME=saslauthd
PROGNAME=saslauthd
PROGRAM=/usr/sbin/saslauthd

service_start()
{
  printf "Starting "$SERVICENAME".\n"
  $PROGRAM -a shadow
}

service_stop()
{
  printf "Stopping "$SERVICENAME".\n"
  killall $PROGRAM
}

service_restart()
{
  service_stop
  sleep 1
  service_start
}

case "$1" in
'start')
  service_start ;;
'stop')
  service_stop ;;
'restart')
  service_restart ;;
*)
  echo "usage $0 start|stop|restart"
esac

設定フォルダを作成

# mkdir /etc/sasl2

/etc/sasl2/smtpd.confを次のように編集する:

pwcheck_method: auxprop

この設定によって、SMTP-Auth用ユーザ名・パスワードとシステムのユーザ名・パスワードを別々にする。

既存ユーザーのパスワード登録は次のように行う:

# echo "パスワード" | saslpasswd2 -p -u yourdomain.com -c hoge

このように設定した場合は、ユーザIDが単にhogeではなく、hoge@yourdomain.comとなるので注意。

SMTP-Auth用ユーザ名、パスワードを確認するには、

# sasldblistusers2
hoge@yourdomain.com: userPassword

SMTP-Auth用ユーザ名、パスワードを削除するには、

# saslpasswd2 -d hoge -u yourdomain.com

sasldb2の所有グループをpostfixに変更しておく。

# chgrp postfix /etc/sasldb2
# chmod g+r /etc/sasldb2

SSL(TLS)有効化

/etc/postfix/main.cfで次を追記:

# inbound
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
tls_random_source = dev:/dev/urandom
tls_random_exchange_name = /var/lib/postfix/prng_exch
smtpd_tls_auth_only = yes
# outbound
smtp_tls_security_level = may
smtp_tls_loglevel = 1

/etc/postfix/master.cfで

smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes

tlsmgr    unix  -       -       n       300     1       tlsmgr

をコメントアウトして有効にする。

また、ポート465番が開いている必要がある。

転送設定

/etc/postfix/aliasesはPostfix用のメール転送設定である。

ここでは、/etc/postfix/aliasesに転送先を記述し、設定を反映させる[3][12]

/etc/postfix/main.cfで次の設定をする:

alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases

例えば、hoge@ドメイン宛に来た時にhoge2@mail.comへメールを転送する場合は、/etc/postfix/aliasesへ

hoge: hoge2@mail.com

を加える。

/etc/postfix/aliasesの編集が終わったら、/etc/postfix/aliasesファイルをバイナリ化し、Postfixが参照できるようにする:

# postalias /etc/postfix/aliases

これで/etc/postfix/aliases.dbが作成される。

動作中のPostfixにすぐ反映させるためにnewaliasesを実行する:

# newaliases

先ほどのhogeユーザーの例が反映しているか確認するには、

# grep ^hoge /etc/postfix/aliases

として、設定した内容が返されているかチェックする。

ユーザーごとの転送設定

ユーザーのホームディレクトリ以下に.forwardというファイルを作るとユーザーごとの転送設定ができる[13]

カンマ区切り

username@foo.com,username@foo1.com

または改行区切り

username@foo.com
username@foo1.com

で転送先のアドレスを書いておく。

転送先にバックスラッシュユーザー名を入れておくと、転送元メールを削除せずに残すことができる。バックスラッシュを付けないと転送が無限ループに陥いるので注意する。

\username,username@foo.com,username@foo1.com

メッセージの最大サイズの設定

メールにファイルを添付してpostfixの最大メッセージサイズを越えると、message file too bigと出て送信することができない。

メッセージの最大サイズを確認するには、

# postconf | grep size_limit
body_checks_size_limit = 51200
bounce_size_limit = 50000
header_size_limit = 102400
mailbox_size_limit = 51200000
message_size_limit = 10240000

とする[14]。デフォルトでは10Mbyteになっていた。

最大サイズを変更するには、/etc/postfix/main.cfに次の行を加える[14]

mailbox_size_limit = 100000240000
message_size_limit = 40240000

mailbox_size_limitはメールボックスの最大サイズで、これが メッセージの最大サイズより大きくないとfatal: main.cf configuration error : mailbox_size_limit is smaller than message_size_limitと言われるので、ここではとりあえず100GBにしておいた。

そしてサービスを再起動:

# /etc/rc.d/rc.postfix reload

変更されたか確認する:

# postconf|grep size_limit   
body_checks_size_limit = 51200
bounce_size_limit = 50000
header_size_limit = 102400
mailbox_size_limit = 100000240000
message_size_limit = 100240000

起動と停止

Postfixの起動や停止はpostfixコマンドを通じて行われる[15]

起動:

# postfix start

停止:

# postfix stop

起動スクリプトの例

/etc/rc.d/rc.postfixを例えば次のように編集する:

#!/bin/sh
#
# postfix start and stop script
#
#

SERVICENAME=postfix
PROGNAME=postfix
PROGRAM=/usr/sbin/postfix

service_start()
{
  printf "Starting "$SERVICENAME".\n"
  $PROGRAM start
}

service_stop()
{
  printf "Stopping "$SERVICENAME".\n"
  $PROGRAM stop
}

service_restart()
{
  service_stop
  sleep 1
  service_start
}

case "$1" in
'start')
  service_start ;;
'stop')
  service_stop ;;
'restart')
  service_restart ;;
*)
  echo "usage $0 start|stop|restart"
esac

トラブルシューティング

次のようなエラー

$ sudo /etc/rc.d/rc.postfix start
Starting postfix.
postsuper: fatal: scan_dir_push: open directory defer: Permission denied
postfix/postfix-script: fatal: Postfix integrity check failed!

で起動できないときは、キューディレクトリ/var/spool/postfixに問題がある[16]

次のように修復を行う:

# rm -rf /var/spool/postfix/
# export daemon_directory=/usr/libexec/postfix/
# /usr/libexec/postfix/post-install create-missing

また、次のような警告

postfix/postfix-script: warning: not set-gid or not owner+group+world executable: /usr/sbin/postqueue
postfix/postfix-script: warning: not set-gid or not owner+group+world executable: /usr/sbin/postdrop

が出るときは、

# postfix set-permissions

としてみる[17]。 うまく設定できているか確認するときは、

# postfix check

とする。

/var/log/maillogに次のようなwarningが数秒ごとに出る:

$ tail /var/log/maillog
Aug 20 17:46:41 Hoge postfix/postdrop[5440]: warning: mail_queue_enter: create file maildrop/331223.5440: Permission denied

この時は、/var/spool/postfix/maildropのパーミッションが問題である[18][19]

私の環境の場合、

drwx-wx--- 2 postfix postdrop 4096  8月 20 17:45 maildrop/

となっていた。

次のようにパーミッション変更を行う。

# chmod 1733 /var/spool/postfix/maildrop

Dovecot

dovecotユーザー・グループの作成

dovecotおよびdovenullユーザー・グループを作成する[20]

# groupadd -g 143 dovecot
# useradd -u 143 -g dovecot -s /sbin/nologin -M dovecot
# groupadd -g 144 dovenull
# useradd -u 144 -g dovenull -s /sbin/nologin -M dovenull

ダウンロード・インストール

Dovecotを/usrへインストールする。 ここではDovecotのバージョンは2.2.13を想定する。

ダウンロード:

wget http://www.dovecot.org/releases/2.2/dovecot-2.2.13.tar.gz
tar zxvf dovecot-2.2.13.tar.gz
cd dovecot-2.2.13

mysqlを有効にして/usrへインストールするよう指定してconfigureを実行[20]:

./configure --prefix=/usr --sysconfdir=/etc --with-mysql

configureの結果

Install prefix . : /usr
File offsets ... : 64bit
I/O polling .... : epoll
I/O notifys .... : inotify
SSL ............ : yes (OpenSSL)
GSSAPI ......... : no
passdbs ........ : static passwd passwd-file shadow checkpassword sql
                 : -pam -bsdauth -sia -ldap -vpopmail
userdbs ........ : static prefetch passwd passwd-file checkpassword sql nss
                 : -ldap -vpopmail
SQL drivers .... : mysql
                 : -pgsql -sqlite
Full text search : squat
                 : -lucene -solr

make&make install

make
sudo make install

パッケージの作成:

sudo mkdir /dev/shm/dovecot-2.2.13
su -
cd /dev/shm/dovecot-2.2.13
makepkg ~/pkg/dovecot-2.2.13.txz

設定ファイルを設定例からコピーする:

sudo cp -r /usr/etc/dovecot /etc
sudo cp -r /usr/share/doc/dovecot/example-config/* /etc/dovecot/

設定ファイルを編集する:

  • /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir ← 追加(メールボックス形式をMaildir形式とする)

起動スクリプト

起動スクリプトを作成する:

  • /etc/rc.d/rc.dovecot
#!/bin/bash
### BEGIN INIT INFO
# Provides:          dovecot
# Required-Start:    $local_fs $remote_fs $network $syslog $time
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Should-Start:      postgresql mysql slapd winbind
# Should-Stop:       postgresql mysql slapd winbind
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Dovecot init script
# Description:       Init script for dovecot services
### END INIT INFO

# Example /etc/init.d/dovecot script. Change DAEMON if necessary.
# License is public domain.
# http://wiki2.dovecot.org/DovecotInit

DAEMON=/usr/sbin/dovecot

# Uncomment to allow Dovecot daemons to produce core dumps.
#ulimit -c unlimited

test -x $DAEMON || exit 1
set -e

base_dir=`$DAEMON config -h base_dir`
pidfile=$base_dir/master.pid

if test -f $pidfile; then
	running=yes
else
	running=no
fi

case "$1" in
	start)
		echo -n "Starting Dovecot"
		$DAEMON
		echo "."
		;;
	stop)
		if test $running = yes; then
			echo -n "Stopping Dovecot"
			kill `cat $pidfile`
			echo "."
		else
			echo "Dovecot is already stopped."
		fi
		;;
	reload)
		if test $running = yes; then
			echo -n "Reloading Dovecot configuration"
			kill -HUP `cat $pidfile`
			echo "."
		else
			echo "Dovecot isn't running."
		fi
		;;
	restart|force-reload)
		echo -n "Restarting Dovecot"
		if test $running = yes; then
			kill `cat $pidfile`
			sleep 1
		fi
		$DAEMON
		echo "."
		;;
	*)
		echo "Usage: /etc/rc.d/rc.dovecot {start|stop|reload|restart|force-reload}" >&2
		exit 1
		;;
esac

SSLの準備

プライベートCAでない場合

aes256で秘密鍵(プライベートキー)を作成:

/etc/ssl/certs# openssl genrsa -aes256 -rand /var/log/messages -out devcot.key 1024
Generating RSA private key, 1024 bit long modulus
......++++++
..........................++++++
e is 65537 (0x10001)
Enter pass phrase for /etc/ssl/private/server.key: パスフェーズを入力
Verifying - Enter pass phrase for /etc/ssl/private/server.key: 確認の為もう一度パスフェーズ入力  

このキーを使うと起動時にパスフレーズを求めてくるので、暗号化を解除したキーも作成する:

 /etc/ssl/certs# openssl rsa -in dovecot.key -out nopass_dovecot.key
Enter pass phrase for dovecot.key:

プライベートCAの場合

プライベートCA(自己認証局)を利用する場合はこちら。

自分の環境に合わせて/etc/ssl/openssl.cnfを編集する[21][22]

   ;;
####################################################################
[ ca ]
default_ca      = CA_default            # The default ca section


####################################################################
[ CA_default ]


# dir          = ./demoCA
dir           = /etc/ssl/CA         # Where everything is kept
certs           = $dir/certs            # Where the issued certs are kept
crl_dir         = $dir/crl              # Where the issued crl are kept
database        = $dir/index.txt        # database index file.
#unique_subject = no                    # Set to 'no' to allow creation of
   ;;
   ;;
default_days=3650                     # several ctificates with same subject.
   ;;
   ;;
# For the CA policy
[ policy_match ]
countryName             = match
stateOrProvinceName     = optional
organizationName        = match
     ::
[ req_distinguished_name ]
countryName                     = Country Name (2 letter code)
countryName_default             = JP
countryName_min                 = 2
countryName_max                 = 2

stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = Tokyo

localityName                    = oote-machi 1,Chiyodaku-ku

0.organizationName              = Organization Name (eg, company)
0.organizationName_default      = Hogehoge corp.
     
organizationalUnitName          = Organizational Unit Name (eg, section)
#organizationalUnitName_default =
   ;;
   ;;
emailAddress                    = Email Address
emailAddress_max                = 64     ::
   ;;
[ usr_cert ]
basicConstraints=CA:FALSE
nsCertType      = server
   ;;

/etc/ssl/misc/CA.shを変更

   ;;
# DAYS="-days 365"      # 1 year
# CADAYS="-days 1095"   # 3 years
DAYS="-days 3650"    # 10 year
CADAYS="-days 7300"  #  20 years
REQ="$OPENSSL req $SSLEAY_CONFIG"
CA="$OPENSSL ca $SSLEAY_CONFIG"
VERIFY="$OPENSSL verify"
X509="$OPENSSL x509"

# CATOP=./demoCA
CATOP=/etc/ssl/CA
CAKEY=./cakey.pem
CAREQ=./careq.pem
CACERT=./cacert.pem
   ;;

スクリプトを実行

# cd /etc/ssl
# ./misc/CA.sh -newca
CA certificate filename (or enter to create)   <---- ca="" strong="">[Enter]
Making CA certificate ...
Generating a 1024 bit RSA private key
...++++++
................++++++
writing new private key to '/etc/ssl/CA/private/./cakey.pem'
Enter PEM pass phrase: ******  <---CAのパスフェーズ(パスワード)設定
Verifying - Enter PEM pass phrase: ******  <---確認の為もう一度同じパスフェーズを入力
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [JP]: <--- jp="" strong="">[Enter]
State or Province Name (full name) [Tokyo]: <--- tokyo="" strong="">[Enter]
oote-machi 1,Chiyodaku-ku  []: <--- oote-machi="" 1="" chiyodaku-ku="" strong="">[Enter]
Organization Name (eg, company) [Hogehoge corp. ]: <--- hogehoge="" corp="" strong="">[Enter]
Organizational Unit Name (eg, section) []: [Enter]
Common Name (eg, YOUR name) []: ca.example.jp     <--- ca="" dns="" br="">Email Address []:root@example.jp
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: [Enter]
An optional company name []: [Enter]
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for /etc/ssl/CA/private/./cakey.pem: <---先程設定したパスフェーズを入力
Check that the request matches the signature
Signature ok
  ;;
  ;;
Write out database with 1 new entries
Data Base Updated

以下のスクリプトで作成したCAの証明書の内容を確認できる:

openssl x509 -in /etc/ssl/CA/cacert.pem -text

パスフレーズなしの秘密鍵を作っておく:

# openssl rsa -in /etc/ssl/CA/private/cakey.pem -out /etc/ssl/CA/private/cakey_nopass.pem

SSLの有効化

/etc/dovecot/conf.d/10-ssl.confでCA証明書と秘密鍵のパスを設定する:

ssl = yes
ssl_cert = </etc/ssl/CA/cacert.pem
ssl_key = </etc/ssl/CA/private/cakey_nopass.pem

メールフォルダ形式

Maildir形式を使う場合は、

mail_location = maildir:~/Maildir

とする。

passwdfile

デフォルトではシステムのユーザ・パスワードで認証するが、passwdfileで設定する方法もある。その場合は/etc/dovecot/conf.d/10-auth.confで次の行を追記する[23]:

!include auth-passwdfile.conf.ext

認証ログを残す

認証ログを残すには、/etc/dovecot/dovecot.confで次の設定をする:

#Auth log into /var/log/maillog
auth_verbose = yes

IPv6を無効にしている環境の場合

IPv6を無効にしている環境では、次のようなエラーが出て起動できない:

# dovecot -c /etc/dovecot/dovecot.conf
Error: socket() failed: Address family not supported by protocol
Error: service(pop3-login): listen(::, 110) failed: Address family not supported by protocol
Error: socket() failed: Address family not supported by protocol
Error: service(pop3-login): listen(::, 995) failed: Address family not supported by protocol
Error: socket() failed: Address family not supported by protocol
Error: service(imap-login): listen(::, 143) failed: Address family not supported by protocol
Error: socket() failed: Address family not supported by protocol
Error: service(imap-login): listen(::, 993) failed: Address family not supported by protocol
Fatal: Failed to start listeners

この場合は、/etc/dovecot/dovecot.confでIPv4だけをlistenするように設定する必要がある[24]

#listen = *, ::
listen = *

メールフォルダを作っておく

メールフォルダを作っておく[25]

mkdir -p ~/Maildir/{Drafts,Sent,Junk,Trash,Archives,Templates}/{new,cur,tmp}

TODO

  • DovecotのPOP3での認証がサーバーのユーザーに限られている。できれば、サーバーのユーザーとは別にアカウントを作って、かつPostfixのsasldbとユーザー名・パスワードを一致させたい。
  • Pushメールを使いたい。DovecotはIMAP IDLEというコマンドでできるらしい[26]

Heirloom mailx

mailxはPostfixのMaildir形式に対応していないため、コマンドライン上からメールを送受信ができない。

そこで、mailxの拡張版とされるHeirloom mailxをインストールして使う手順を載せておく[27]

ソースコードをダウンロードする[28]

$ cvs -d:pserver:anonymous@nail.cvs.sourceforge.net:/cvsroot/nail login
CVS password:<just type return>
$ cvs -d:pserver:anonymous@nail.cvs.sourceforge.net:/cvsroot/nail co nail

Makefileを編集し

cd nail
vim Makefile

次の箇所を変更

SENDMAIL    = /usr/bin/sendmail

UCBINSTALL = /usr/bin/install

コンパイルしてインストール:

make
sudo make install

~/.mailrcを次のように編集する[29][30]

set MAIL=/home/hoge/Maildir
set folder=mail

hogeはユーザー名。これで

mailx

とコマンドを打つとホームディレクトリのMaildirにあるメールが読める。

References

  1. wikipedia:ja:Postfix
  2. wikipedia:ja:Dovecot
  3. 3.0 3.1 http://docs.slackware.com/howtos:misc:postifx_with_cyrus
  4. http://www.postfix-jp.info/trans-2.3/jhtml/BASIC_CONFIGURATION_README.html
  5. 5.0 5.1 http://centossrv.com/postfix.shtml
  6. http://centossrv.com/postfix-tls.shtml
  7. http://www.lins.jp/~obata/imap/server-compare.html
  8. http://www.postfix-jp.info/trans-2.2/jhtml/TLS_README.html#build_tls
  9. http://www.yocum.org/faqs/postfix-tls-sasl.html
  10. http://www.postfix-jp.info/ML/arc-2.3/msg00391.html
  11. Postfix SASL Howto http://www.postfix.org/SASL_README.html 2015.01.07閲覧。
  12. http://open-groove.net/postfix/mail-forward/
  13. postfix の aliases(エイリアス) でメールを転送 | プラスター業務日記 http://www.plustar.jp/lab/blog/?p=9276
  14. 14.0 14.1 Postfix の添付容量制限についてのメモ | treffen @ memo http://pub.slateblue.tk/memo/day2586.html
  15. http://www.wakhok.ac.jp/~kanayama/summer/02/site/node92.html
  16. http://sy2920.s151.xrea.com/solaris/postfix-pkg.html
  17. http://jeffkarney.com/2013/01/15/fixing-postfix-permission-issues-linux/
  18. http://scd.cocolog-nifty.com/blog/2006/08/darwin_postfixp_3fdd.html
  19. http://kobitosan.net/postfix/ML/arc.2/msg00694.html
  20. 20.0 20.1 http://ajaxnote.com/external/?id=vxNJ0C3NBsIpN3MAMrRT5g==
  21. http://blog.robata.org/arcive/doc-openssl.html
  22. http://last-resort.seesaa.net/article/95384552.html
  23. Linuxねた帳: dovecot passwd-fileについて - http://knowledge4linux.blogspot.jp/2013/08/dovecot-passwd-file.html
  24. http://futuremix.org/2012/05/centos-6-dovecot-2
  25. Maildir形式でのフォルダ構成 | 非技術者の技術研究記 https://www.aozorawaon.com/?p=255
  26. http://server-setting.info/centos/dovecot-imap-idle-push-mail.html
  27. http://tech.thekyo.jp/%E3%80%8Cheirloom-mailx%E3%80%8D%E3%81%A7%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%81%8B%E3%82%89smtp%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%81%E4%BF%A1/821/
  28. http://heirloom.sourceforge.net/mailx.html
  29. http://osdir.com/ml/mail.nail.devel/2008-08/msg00001.html
  30. http://forums.fedoraforum.org/showthread.php?t=287377