標準でインストールされているpostfixとdovecotを使って、メールサーバを構築します。
設定内容は以下。
- 個人ごとにUNIXアカウントを作らない
- メール送信はサブミッションポート経由(SMTP Auth)
- SMTP/POPパスワードはdovecotで一元管理
- SSLはとりあえず使わない
- POP3のみ対応(imap未対応)
- Maildir形式
パッケージのインストール
# yum -y install dovecot cyrus-sasl-md5サーバ名の設定とSELinux無効化もやっておいたほうがいいようです。
サーバ名の設定は /etc/sysconfig/hostnameとhostnameコマンド、SELinux無効化はこちら。
dovecotの設定
個人ごとのUNIXアカウントは作らないので、メールを読み書きする共通のUNIXアカウントが必要となります。# groupadd -g 10000 vmail
# useradd -u 10000 -g 10000 -d /var/spool/vmail -r -s /sbin/nologin vmail
# mkdir /var/spool/vmail
# chown vmail:vmail /var/spool/vmail
# chmod 700 /var/spool/vmail
CentOS5から6になって、dovecotも1.xから2.0になりました。
- /etc/dovecot.conf単体ではなく、/etc/dovecot.confで概要を指定して、各セクションの詳細は /etc/conf.d/ で設定するようになった
- デフォルト値が少し変わった(SSLはデフォルトでONなど)
- これまでUNIXアカウントはdovecotだけだったが、dovenullも追加された(yumで自動的に追加されます)
- dovecotpwがなくなり、doveadmとなった
デフォルトでは、SSLを使わない場合にはプレーンテキスト認証は無効になりました。
disable_plaintext_auth = no で有効にします。
また、mail_locationを記述しないとエラーになるようです。
# vi /etc/dovecot/dovecot.conf
auth_mechanisms = cram-md5 plain login disable_plaintext_auth = no mail_location = maildir:~/Maildir passdb { args = /etc/dovecot/dovecot-passwd driver = passwd-file } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } user = root } ssl = no userdb { args = uid=vmail gid=vmail home=/var/spool/vmail/%d/%n driver = static }
パスワードの生成にはdoveadmコマンドを使うようになりました。
認証スキームはHMAC-MD5, CRAM-MD5などがあるようです。
# doveadm pw -s HMAC-MD5
Enter new password: Retype new password: {HMAC-MD5}8c9169f45b3b78f4c4803d5110e431b1bd71370939221876e3abe01e35bc45c2
doveadmが吐き出したパスワードを、パスワードファイルに保存しておきます。
# vi /etc/dovecot/dovecot-passwd
test@example.com:{HMAC-MD5}8c9169f45b3b78f4c4803d5110e431b1bd71370939221876e3abe01e35bc45c2
dovecotを起動します。
# /etc/rc.d/init.d/dovecot start
# chkconfig dovecot on
postfixの設定
■設定"mydestination="を書かないと、"warning: do not list domain example.com in BOTH mydestination and virtual_mailbox_domains"のような警告がでます。
# vi /etc/postfix/main.cf
# 以下を編集 inet_interfaces = all home_mailbox = Maildir/ mydestination = # 以下を追加 smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination broken_sasl_auth_clients = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous virtual_mailbox_domains = example.com virtual_mailbox_base = /var/spool/vmail virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_minimum_uid = 100 virtual_uid_maps = static:10000 virtual_gid_maps = static:10000 virtual_alias_maps = hash:/etc/postfix/virtual virtual_maps = hash:/etc/postfix/virtual
# vi /etc/postfix/master.conf
# 以下を有効に submission inet n - n - - smtpd
■メールアドレスを追加
# vi /etc/postfix/vmailbox
test@example.com example.com/test/Maildir/# postmap /etc/postfix/vmailbox
virtual.dbもできてない場合があるので、一応。
# postmap /etc/postfix/virtual
■postfixを再起動
# /etc/rc.d/init.d/postfix restart
ファイアウォールの設定変更
他サーバからの中継用の25、POP110、サブミッション587を開けます。# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
クラウドコンソールで、ファイアウォールを追加します。
クラウドコンソールで、ポート転送を追加します。
以上で設定完了です。
こちらを参考に、不正リレーチェックを行っておきます。
運用開始後の作業も上記URLとほぼ同じです。(dovecotpwがdoveadmに変わっただけ)