====== Postfix + Dovecot @SMTP-AUTH ======
PostfixとDovecotは親和性が良い。ウンウン
SMTP-AUTHの認証をDovecotが引受けてくれるのだ。
環境は例によってCentOS5.5
RedHat Enterprise6が正式にMTUをPostfixへ変更してきたので、時代はPostfixなのかと慌てて検証をした(笑
CentOS6はまだリリースされていないので環境はCentOS5.5で構築してます(2010年11月17日)
■ 環境
OS : CentOS5.5 32bit
Postfix : postfix-2.3.3-2.1.el5_2
Devecot : dovecot-1.0.7-7.el5
バーチャル用のシステムユーザを作成
groupadd -g 5000 vuser
useradd -g vuser -u 5000 vuser
mkdir /home/vuser/vhosts/
chmod -R 771 /home/vuser/
chown -R vuesr:vuser /home/vuser/
Postfixインストール
yumでサクッとインストールできる
yum -y install postfix
Postfixが肝心のdovecot認証が使える状況か確認する
postconf -a
cyrus
dovecot ← これが含まれていたらOK
設定ファイルを修正
cd /etc/postfix/
vi main.cf
サーバーのホスト名
myhostname = FQDN
ドメイン名を設定
mydomain = ドメイン名
全てのインターフェースから受付ける
inet_interfaces = all
バーチャルドメインで運用するので空白
mydestination =
Maildir形式にする
home_mailbox = Maildir/
サーバー名を隠す
unknown_local_recipient_reject_code = 550
SMTP-AUTHをDovecotに渡す設定
smtpd_sasl_security_options = noanonymous
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = hash:/etc/postfix/virtual_domains
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
バーチャルドメインの設定
virtual_mailbox_domains = hash:/etc/postfix/virtual_domains
virtual_mailbox_base = /home/vuser/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual
保存して終了
ローカルのバーチャルドメインを登録するファイルを作成する
vi /etc/postfix/virtual_domains
ドメイン名 required to prevent relay access denied errors
ドメイン名の右辺はダミーなのでなんでも構わないです
ハッシュに変換します
postmap /etc/postfix/virtual_domains
バーチャルユーザを作成する
ファイルをインクルードする事は出来ないのでドメイン毎にファイルを作成する場合はハッシュに変換する前にマージする
vi /etc/postfix/vmailbox
ユーザ名@ドメイン名 ドメイン名/ユーザ名/Maildir/
ハッシュに変換します
postmap /etc/postfix/vmailbox
Submissionポートを利用可能にする
vi /etc/postfix/master.cf
Submission行のコメントを外す
submission inet n - n - - smtpd
Sendmailを停止してMTAをPostfixへ変更する
service sendmail stop
chkconfig sendmail off
chkconfig --list sendmail
alternatives --config mta
選択 コマンド
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.sendmail
2 /usr/sbin/sendmail.postfix
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
dovecotをインストール
yumでサクッとインストール
yum -y install dovecot
設定ファイルを修正
cd /etc/
vi dovecot.conf
設定箇所
auth default {
mechanisms = digest-md5 cram-md5 plain login
passdb passwd-file {
args = /home/vuser/dovecot-passwd
}
userdb passwd-file {
args = /home/vuser/dovecot-passwd
}
user = root
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
**ここでハマった!!mechanismsの設定でPlainだけだとSMTP-AUTHの認証が通らない事に気づくのに1日以上かかった(--;)**
/usr/lib/sasl2/smtpd.confの設定やsaslauthのサービスは起動する必要は無いと思う。。。たぶん
バーチャルドメイン用のディレクトリを作成する
cd /home/vuser/
mkdir vhosts
chmod 755 vhosts
chown vuser:vuser vhosts
dovecot用のパスワードファイルを作成する
cd /home/vuser/
vi dovecot-passwd
ユーザ名@ドメイン名:{Plain}パスワード:5000:5000::/home/vuser/vhosts/%d/%u/Maildir/
サービスを起動
service postfix start
service dovecot start
chkconfig postfix on
chkconfig dovecot on
■ 確認
chkconfig --list postfix
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
chkconfig --list dovecot
dovecot 0:off 1:off 2:on 3:on 4:on 5:on 6:off