PostfixでSMTP認証の(多分一番簡単な)設定をおこなう
Page content
前提条件
- ubuntu22.04.4LTS
- pamを使う(Linuxのユーザ/パスワードを使った認証)
- postfixのみで認証する(dovecot経由ではない)
Copilotに聞きながら設定したのだが、なかなか認証に成功せず迷走してしまった。結局Postfixの公式ドキュメントを読むのが一番近道(感想)
必要パッケージのインストール
sudo apt-get update
sudo apt-get install sasl2-bin
設定ファイルの変更
/etc/postfix/main.cf
# SMTP-AUTH
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
/etc/postfix/master.cf
以下3行のコメントアウトを外す。-oの前のスペースは必要なので#だけ消すこと。
submission inet n - y - - smtpd
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
/etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
/etc/default/saslauthd
MECHANISMS="pam"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
UNIXドメインソケット用のディレクトリ作成
$ sudo mkdir -p /var/run/saslauthd
$ sudo ln -s /var/run/saslauthd /var/spool/postfix/var/run/saslauthd
プロセス起動・確認
$ sudo systemctl restart saslauthd
$ sudo systemctl status saslauthd
● saslauthd.service - LSB: saslauthd startup script
Loaded: loaded (/etc/init.d/saslauthd; generated)
Active: active (running) since Wed 2024-09-04 13:52:46 JST; 51min ago
Docs: man:systemd-sysv-generator(8)
Process: 5090 ExecStart=/etc/init.d/saslauthd start (code=exited, status=0/SUCCESS)
Tasks: 5 (limit: 2212)
Memory: 3.6M
CPU: 110ms
CGroup: /system.slice/saslauthd.service
├─5111 /usr/sbin/saslauthd -a pam -c -m /var/spool/postfix/var/run/saslauthd -n 5
├─5112 /usr/sbin/saslauthd -a pam -c -m /var/spool/postfix/var/run/saslauthd -n 5
├─5113 /usr/sbin/saslauthd -a pam -c -m /var/spool/postfix/var/run/saslauthd -n 5
├─5114 /usr/sbin/saslauthd -a pam -c -m /var/spool/postfix/var/run/saslauthd -n 5
└─5115 /usr/sbin/saslauthd -a pam -c -m /var/spool/postfix/var/run/saslauthd -n 5
activeであること、unixドメインソケットのパス等を確認。
$ sudo systemctl restart postfix
メーラ等から送信確認して完了。