参考サイトそのままなのだが、こういうのは残ってくれているのか不安だったりするので、ここでもメモ。
ちなみに、iPhoneメーラでSMTPするのは結果的にはできませんでした。かなしい。
参考サイト:
ConoHa のメールサーバーを使おうとしたら SSL 証明書で難儀した話 (序説) - Compnet
ConoHa のメールサーバーを使おうとしたら SSL 証明書で難儀した話 (実装編) - Compnet
ConoHaのメールサーバには証明書に問題があって、証明書では「*.tyo1.conoha.io」とあるのに、実際に利用するのは{smtp, imap}.hogehoge.conoha.ioを指示されるのだ。
Thunderbirdの場合は例外承認すれば済むけど、今回はiPhoneのメールアプリで、そもそも通信してくれなさそうだった。SSLをオフにすれば良いのだが、それでは時代に逆行し過ぎでしょう。
という訳で、ConoHaのメールサーバとのやり取りが問題なので、ConoHaの証明書を受け入れるプロキシを設置し、クライアントからはこのプロキシに通信を申し入れれば良い。
では設定。
今回の環境は、Ubuntu 20.04 LTS(SMTPはdovecotの2.3.0以上が必要なので、それが用意できる必要がある)
また、SSL証明書が必要なので、適宜用意しておく。今回もLet’s encryptにお世話になりました。
必要パッケージのインストール。
$ sudo apt-get update
$ sudo apt-get install dovecot-imapd dovecot-submissiond
コンフィグの書き換え。
/etc/dovecot/conf.d/10-auth.conf
・auth_mechanismsにplain login cram-md5
・「!include auth-system.conf.ext」行をコメントアウト
・「!include auth-static.conf.ext」行をアンコメント
/etc/dovecot/conf.d/auth-static.conf.ext
・末尾に以下を追記
passdb {
driver = static
args = proxy=y nopassword=y
default_fields = destuser=%u nologin=y starttls=any-cert
}
userdb {
driver = static
args = uid=mail gid=mail /home=/dev/null
}
/etc/dovecot/conf.d/10-ssl.conf
・ssl = noをyesに変更
・ssl_cert, ssl_keyをLet’s encryptで取得したfullchain.pemとprivkey.pemに設定する
/etc/dovecot/conf.d/20-imap.con
・protocol imap {}の中に以下を追記
login_greeting = IMAP ready.
passdb {
driver = static
args = proxy=y host=imap.hogehoge.conoha.io nopassword=y
}
/etc/dovecot/conf.d/20-submission.conf
・submission_client_workaroundsにwhitespace-before-path mailbox-for-pathを記述
・protocol submission {}の中に以下を追記
passdb {
driver = static
args = proxy=y host=smtp.hogehoge.conoha.io nopassword=y
}
以上でコンフィグは完了。あとは必要なポートを開けて、dovecotを起動するだけ。
Thunderbirdから送受信した感じ、何もエラーは生じなかったのだが、iPhoneのメーラで送信しようとすると思いっきり弾かれるのでこまった。Thunderbirdのログを眺めると問題なくSTARTTLSしてそうなのだけど、iPhoneのメーラってSTARTTLSサポートしてないとかそういうことないよね?
$ NSPR_LOG_MODULES=timestamp,append,SMTP:4 NSPR_LOG_FILE=./log thunderbird
$ cat ./log
2020-08-04 15:28:49.506598 UTC - [(null) 2885857: Main Thread]: I/SMTP SMTP Connecting to: hogehoge.com:587
2020-08-04 15:28:49.612342 UTC - [(null) 2885857: Main Thread]: I/SMTP SMTP entering state: 0
2020-08-04 15:28:49.612352 UTC - [(null) 2885857: Main Thread]: I/SMTP SMTP Response: 220 133-130-115-187 Dovecot (Ubuntu) ready.
(中略)
2020-08-04 15:28:49.642992 UTC - [(null) 2885857: Main Thread]: I/SMTP SMTP Send: STARTTLS
2020-08-04 15:28:49.672845 UTC - [(null) 2885857: Main Thread]: I/SMTP SMTP entering state: 0
2020-08-04 15:28:49.672855 UTC - [(null) 2885857: Main Thread]: I/SMTP SMTP Response: 220 2.0.0 Begin TLS negotiation now.
(略)
この後特にエラーも出ず最後までいっているので、普通にSTARTTLSできていると判断。
後日、STARTTLSじゃなくてSSL/TLSな感じに設定してみて、リベンジしてみよう。