Postfixのメール送信時のユーザー認証の仕組みとしては、デフォルトでcyrusとなっているので、ほとんどはcyrus-sasl(saslauthd)を使っている人も多いかと思います。
ですが、同一サーバーでDovecotも動いているなら、DovecotそのものでもPostfixのメール送信時のユーザー認証をすることができます。
1) Dovecotのユーザー認証の仕組みにloginを追加
PostfixからDovecotのユーザー認証を利用する場合、平文認証(plain)ではなく、ログイン(login)認証が要求されるので、auth_mechanismsに以下のように追加します。
/etc/dovecot/conf.d/10-auth.conf:
# NOTE: See also disable_plaintext_auth setting.
auth_mechanisms = plain login
2) PostfixがDovecotに問い合わせるUNIXソケットを用意
PostfixがDovecotにユーザー認証をしてくるときのUNIXソケット(unix_listener)を以下のように用意します。
/etc/dovecot/conf.d/10-master.conf:
service auth {
:
:
#### unix_listener auth-userdb {
#mode = 0666
#user =
#group =
#### }
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
# Auth process is run as this user.
#user = $default_internal_user
}
3) Dovecotを再起動
ここまでしたら、Dovecotを一度再起動して、UNIXソケットがきちんとできているかを確認しましょう。
systemctl restart dovecot
systemctl -l --no-pager status dovecot
ls -al /var/spool/postfix/private/
4) Postfix側でメール送信時のユーザー認証としてDovecotを指定
Postfixのメール送信時のユーザー認証の方式を、デフォルトのcyrusからdovecotに変更します。
/etc/postfix/main.cf:
# with SASL2
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
上記の四つの設定はデフォルトのmain.cfにはないかもしれませんので、最後のほうにでも追加します。
5) Postfixを再起動
あとはPostfixを一度再起動して、メール送信時のユーザー認証がきちんと機能するか、メールソフトで実際にメールを送信して確認しましょう。
systemctl restart postfix
systemctl -l --no-pager status postfix
いかがでしたか?
saslauthdという余計なプロセスが一つ不要になるだけでなく、送信系と受信系のユーザー認証が同じ条件になりますので、すっきりしていいかと思います。