PostfixでSMTP認証の(多分一番簡単な)設定をおこなう

Page content

前提条件

  • ubuntu22.04.4LTS
  • pamを使う(Linuxのユーザ/パスワードを使った認証)
  • postfixのみで認証する(dovecot経由ではない)

Copilotに聞きながら設定したのだが、なかなか認証に成功せず迷走してしまった。結局Postfixの公式ドキュメントを読むのが一番近道(感想)

Postfix SASL Howto

必要パッケージのインストール

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

メーラ等から送信確認して完了。

関連記事