メールサーバはPostfixとDovecotを使います。メールアドレスは複数ドメインで、アカウントはLinuxユーザのを使用、送信はSMTP認証です。
さくらのVPSは2週間のお試し期間中はメールが使えません。2週間経ってなくてもいける! と思ったら本契約ボタンを押して下さい。1時間位で使えるようになるそうです。
Postfix(送信)
Postfixはインストール済みで既に稼働もしていたので、設定だけします。
# vi /etc/postfix/main.cf
以下のように修正
myhostname = www????.sakura.ne.jp
mydomain = www????.sakura.ne.jp
myorigin = $mydomain
inet_interfaces = all
#inet_interfaces = localhost
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP unknown
以下を追加(スパム対策)
disable_vrfy_command = yes
smtpd_helo_required = yes
以下を追加(バーチャルドメイン用)
virtual_alias_maps = hash:/etc/postfix/virtual
以下を追加(SMTP-Auth用)
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
以下を追加(メールへの添付可能サイズを無制限にする)
message_size_limit = 0
mailbox_size_limit = 0
メール送信時にサブミッションポート(587)を使用します。
# vi /etc/postfix/master.cf
以下の行のコメントアウトを外す
submission inet n - n - - smtpd
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
設定をリロードします。
# service postfix reload
ネット上ではリロードだけで済むって書いてあったけど、maillog見たら再起動しろって警告が出てたので結局再起動。メール送れなくて悩んだよ……
# service postfix restart
Saslauthd(SASL認証)
SMTP認証のためにSaslauthdを使用します。アプリと認証処理を分離してくれるものらしい。
# vi /etc/sysconfig/saslauthd
Linuxユーザのパスワード(/etc/shadow)を使う
MECH=shadow
起動します。
# service saslauthd start
# chkconfig saslauthd on
Dovecot(受信)
Dovecotをインストールします。
# yum install dovecot
設定していきます。
# vi /etc/dovecot/conf.d/10-mail.conf
以下の行のコメントアウトを外す
mail_location = maildir:~/Maildir
# vi /etc/dovecot/dovecot.conf
以下の行のコメントアウトを外す
protocols = imap pop3 lmtp
listen = *, ::
# vi /etc/dovecot/conf.d/10-auth.conf
パスワードを平文にする
disable_plaintext_auth = no
# vi /etc/dovecot/conf.d/10-ssl.conf
SSL接続しない
ssl = no
Dovecotを起動します。
# service dovecot start
# chkconfig dovecot on
メールアドレス作成
useradd時にメールボックス用のディレクトリを自動で作成されるようにします。
# mkdir -p /etc/skel/Maildir/{new,cur,tmp}
# chmod -R 700 /etc/skel/Maildir/
メールアカウント用のユーザをシェルログイン不可で作成します。
useradd -s /sbin/nologin hoge-info
passwd hoge-info
useraddしたらメールボックスはこのように作成されました。
/home/hoge-info/Maildir/new/
/home/hoge-info/Maildir/cur/
/home/hoge-info/Maildir/tmp/
メールアドレスとその振り分け処理を作成します。ドメインごとにanythingの行を入れないとメールが使用できません。入れ忘れて無駄に回り道した……
# vi /etc/postfix/virtual
hoge.com anything
info@hoge.com hoge-info
web@hoge.com hoge-web
振り分けを反映させます。
# postmap /etc/postfix/virtual
これでメールの送受信が出来るようになりました。
ぐぐるとアカウントをMySQLで管理する方法があったりとか、色んな設定があるようで、目的の情報がなかなか見つからず苦労しました。
暗号化とかしてないので、セキュリティ的にはちょっと弱いかもしれませんが、とりあえずこれで。