お茶漬けぶろぐ

ConoHaメールサーバの証明書エラーを解決する

前回の振り返り

以前、ConoHaのメールサーバで証明書エラーが出るのをどうにかする - お茶漬けぶろぐという記事を書いた。

要約すると、

というのが前回記事の内容だった。

さて、

SMTPの問題をどうやって解消するか?

解消っつーか実際には逃げの手なんだけど、

メール転送サービスは、今回はSendGridを使わせてもらう。

というわけで、以下の対処方針でなんとかする。

Postfixの設定

※あやふやな記憶をベースに書いてるので過不足や間違いあると思うので、これを見た人は自分で調べ直してね()

$ sudo vim /etc/postfix/main.cf
# TLS parameters
smtpd_use_tls = yes
smtpd_tls_cert_file=/etc/letsencrypt/live/DOMAIN/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/DOMAIN/privkey.pem
smtpd_tls_security_level=may
smtpd_tls_lovlevel=1
smtpd_tls_received_header=yes

# sasl
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_tls_security_level = encrypt
header_size_limit = 4096000

# relay
relayhost = [smtp.sendgrid.net]:587

# local mail settings
local_recipient_maps =
transport_maps = hash:/etc/postfix/transport
$ sudo vim /etc/postfix/master.cf
smtps     inet  n       -       y       -       -       smtpd

基本線はこんなイメージのはず。
それぞれぴろっと書くか。

SSL通信するように

SMTP認証

基本的には上記設定で良いと思う。

認証情報としてのユーザを登録する必要がある。引数はUSER@DOMAINというメールアドレスを操作するつもりで書いている。

# ユーザ作成
$ sudo saslpasswd2 -f /var/spool/postfix/etc/sasldb2 -u DOMAIN -c USER
# ユーザ一覧
$ sudo sasldblistusers2 -f /var/spool/postfix/etc/sasldb2
# ユーザ削除
$ sudo saslpasswd2 -f /var/spool/postfix/etc/sasldb2 -u DOMAIN -d USER

リレー

メールは全てSendGridに投げるので良いけど、SendGridに認証を要求されるので、認証情報を記載する必要がある。

$ sudo vi /etc/postfix/sasl_passwd
[smtp.sendgrid.net]:587 apikey:hogehogefugafuga
$ sudo postmap hash:/etc/postfix/sasl_passwd

ローカルメール対応

ローカルメールというのは、宛先ドメインが、自分のサーバと同じになっているメールのこと。本来ならそういう状態のメールは外部に転送する必要もなく、自分のところのサーバ内でやり取りすれば済む。

ただ、今回の構成は、

という状態のため、普通に自分自身とか、同ドメインの別アドレスにメールを送信しようとすると、ローカルメール扱いになってしまう。
そして、ローカルメールに見えるくせに、メールボックスは外部サーバのため、本当は送信する必要があるのだ。
更に言うと、Postfixのデフォルト動作では、ローカルメール判定を受けた上で、そのユーザがローカルに存在しない場合Rejectするようになっている。
これらに対処する必要がある。

まずはローカルにユーザが存在しない場合でも処理をする設定としてlocal_recipient_maps =を入れている。明示的に空の値を設定している。

次に、ローカルメールのとき、つまり宛先ドメインが自分自身のときに、リレーをするようにtransport_mapsを記載する。

$ cat /etc/postfix/transport
DOMAIN smtp:[smtp.sendgrid.net]:587

おわり

メールサーバに対してかなり苦手意識があったけど、動くものが一旦作れると、多少なりとも自信にはなるね。送信部分はまるっとSendGridにお願いしちゃってるのでなんともだけど。
今回は別の趣味で使ってるドメインについて設定したけど、今度は普通にプライベート用を作ってみたりしようかな。メインのドコモ回線をahamoに切り替えようと思っているので、ドコモメールが無くなっちゃうんだよね。それの退避先として自前のサーバに作ってみようかな〜と思ったりしちゃったり。最早メールアドレスを作る事より、既存のドコモメールで登録しているサービス群の登録変更がクソめんどうくさい…

< Thunderbirdがクソ重いのがbeta版で改善されたっぽい

BracketsでESLintしたい >