インストール

https://blog.denet.co.jp/ec2-postfix-dovecot-mail-server-setup/#IMAPPOP3%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89Dovecot に沿って作業。 Ubuntu は以下パッケージで提供。 その他は記事通りに作業。

$ sudo apt -y install dovecot-core dovecot-pop3d dovecot-imapd

POP3 接続確認

POP3( 110番 )の平文接続は認証情報がそのままネットワークを流れます。 また Dovecot は既定が disable_plaintext_auth = yes のため、localhost 以外からの平文接続では認証自体が拒否されます。

-ERR [AUTH] Plaintext authentication disallowed on non-secure (SSL/TLS) connections.

そのため POP3S( 995番 )または STARTTLS で接続を確認します。

$ openssl s_client -crlf -connect example.com:995                 # POP3S
$ openssl s_client -crlf -starttls pop3 -connect example.com:110  # STARTTLS

接続したら以下を1行ずつ入力します( POP3 のコマンドは大文字 )。

USER 
PASS 
LIST
RETR 1
QUIT
  • LIST メールの一覧とサイズを表示
  • RETR 1 最初のメールを取得
  • QUIT 切断

ref. https://qiita.com/tanuwo/items/fb002378177d322941ee

SMTP AUTH( SASL )を設定

  • https://blog.denet.co.jp/ec2-postfix-dovecot-mail-server-setup/#IMAPPOP3%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89Dovecot
  • https://www.webcyou.com/?p=11221

参考記事では /etc/postfix/master.cf の以下の行のコメントアウトを外す手順になっています。

-o smtpd_sasl_auth_enable=yes (コメントアウトを外します)

※ Ubuntu 22.04 でこの行の コメントアウトを外したところ postfix check がエラーになり、postfix を起動できませんでした。 そのときはコメントアウトしたまま作業を進めました。

原因

master.cf-o で始まる行は 直前のサービス定義の継続行 です( 行頭の空白が継続行であることを示します )。 そのため以下のいずれかに該当するとエラーになります。

  • 親となる submission inet ... の行がコメントアウトされたまま、-o の行だけコメントアウトを外した
  • コメントを外す際に行頭の空白まで削ってしまった

submission( 587番 )を有効にする場合は、親のサービス行と配下の -o 行を セットで コメントアウトから外します。

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject

※ 上記は抜粋です。実際の行は /etc/postfix/master.cf のコメントアウトされた記述に従ってください。

実際に有効になっているサービス定義を確認します。

$ sudo postconf -M
$ sudo postfix check
$ sudo systemctl restart postfix   # master.cf の変更は reload では反映されない

未検証

この節は最後まで検証できていません。

  • 上記のエラーにより -o smtpd_sasl_auth_enable=yes はコメントアウトしたままにしたため、SMTP AUTH は有効化できていません
  • Postfix から Dovecot SASL を使うには、Dovecot 側で認証ソケットを Postfix のキューディレクトリに作成する設定( /etc/dovecot/conf.d/10-master.conf )も必要ですが、こちらも未実施です
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}

Postfix 側に必要な設定は後述の「SASL ライブラリについて」を参照してください。

SASL ライブラリについて

Dovecot SASL を使う構成( 参考記事の手順 )では sasl2-bin のインストールは不要です。

Postfix 側で以下を指定すると、認証は Dovecot の認証ソケット経由で行われます。

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

sasl2-bin に含まれる saslauthdCyrus SASLsmtpd_sasl_type = cyrus )を使う場合に必要になるもので、この構成では使いません。

$ sudo apt install sasl2-bin  # Cyrus SASL を使う場合のみ

sudo apt install cyrus-sasl2 は失敗します。 cyrus-sasl2ソースパッケージ名 であり、インストールできるバイナリパッケージは sasl2-bin / libsasl2-2 / libsasl2-modules です。