お茶漬けぶろぐ

ConoHaのメールサーバで証明書エラーが出るのをどうにかする

参考サイトそのままなのだが、こういうのは残ってくれているのか不安だったりするので、ここでもメモ。
ちなみに、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な感じに設定してみて、リベンジしてみよう。

< btrfsでNASを組む

Chromeの入力履歴を削除する >