先日、Mastodon アカウント連絡専用に Postfix を設置して、support@jisaba.life を用意した。
これで「サーバー設定」の「連絡先アドレス」に普段使いのメールアドレスを使う必要はないから目的は達成している。
しかし、Proxmox Mail Gateway(PMG)という Mail Proxy があって、これを導入すると送受信でスパムやウィルスチェックが可能になる。PVE(Proxmox Virtual Environment)、PBS(Proxmox Backup Server) に PMG と、すべてフリーで使用できる。素晴らしい!!
一般的なメールサービス(Gmail など)も自動的にウィルススキャンしてくれるし、わざわざ導入するまでもないとは思うけど、自鯖だし折角だし試してみる。
導入環境
WAN 側の IP アドレスはプロバイダから DHCP で割り当てられる1個。なので Wi-Fi ルータでポートを開放して、iPhone や PC(MUA)で WAN 側からも送受信できるようにしている。
自宅(LAN)から外部へのメール送信は OP25B のため port 25 以外(サブミッションポート 587 など)で送信する必要があるから環境に応じて設定を(最後にメモを書いておく)。
運用中のドメインは jisaba.life 以外にも複数あるけれど、メール送受信に使用するのは jisaba.life だけだから LAN 内のメールサーバーも1つ。仮に複数ドメインで PMG を使用する場合でも、各メールサーバーのポートを PMG に向ければ OK。
あと、送信専用メールサーバーから普通に Thunderbird から送受信できるように Dovecot をインストールしておいた。

準備
メールを送出した MTA が正当な MTA であることを証明するため、DDNS で TXT レコードに v=spf1 mx -all を追加しておく。
詳しくはこちらを。

他には・・・Postfix でメールを送受信できるように予め設定を終えておくこと。でないとうまく動作しないときに PMG との切り分けに悩む(かもしれない)。
postfix の設定パラメータはこちらを。PMG の日本語訳のせいで思い込み勘違いする可能性あり。
LAN 内のメールサーバーが postfix なら、/etc/postfix/master.cf の smtpd のポートを 26 に変更しておくこと。
#smtp inet n - y - - smtpd
26 inet n - y - - smtpd
PMG のインストール
PVE には PMG の CT テンプレートもあるけれど、まずは普通に VM を使ってみることにした。
インストール自体は PVE や PBS と同じような感覚で進められるから特に躓くことは無いと思う。
VM における注意点は BIOS メニューで Secure Boot を無効にすることくらいかな。
ダウンロードはこちらから。
管理画面からの設定
自鯖環境ではドメインが1個なので設定は単純。設定は、管理画面の「設定」の「メールプロキシ」で行う。
リレー(postfix の relay_transport)
最初は、思わず触りたくなるけれど何もしない(してはダメな)ところ「リレー」についてメモ。
もし LAN 内のメールサーバーに転送先が���い場合に、外部の MTA に送信するために設定が必要になるが、そもそも OP25B のため WAN 側への port 25 による送信は不可。なので何も変更せずに初期設定のまま放置する。

リレードメイン(postfix の relay_domains)
PMG がメールをリレーしようとする配送先のドメイン。自鯖環境だと今のところメールサーバーは1個だから jisaba.life だけを記述する。もし他にもドメイン(メールサーバー)があれば列記すること。

ポート(postfix の master.cf)
WAN 側のポートに port 25、LAN 内のメールサーバーとの通信に port 26 を設定する。ちなみに、OP25B は名前の通り LAN 側からインターネット側への通信をブロックするものなので、インターネット上の MTA から Wi-Fi ルータ(および LAN)への通信は(正しく Wi-Fi ルータを設定していれば)可能・・・プロバイダによってはダメなこともある?

トランスポート(postfix の transport_maps)
メッセージの配送先を指定。自鯖の場合はドメイン jisaba.life のメールを管理するホスト(メールサーバー)を、ドメインと IP アドレスで指定する。複数ドメイン(メールサーバー)が存在する場合は列記する。

基本的な設定は以上。必要に応じてオプションやメールフィルタの詳細を設定する。
しばらく初期設定のまま運用してみて、もう少し調べて詳細を詰めることにしよう。
OP25B 対策
管理画面でメールプロキシの設定を変更するたびに /etc/main.cf は書き換わるため、元となるテンプレートファイルを編集して OP25B対策を施す。対象のファイルは main.cf.in。
追記するのは以前と同じくサブミッションポートを使用した配信の設定。自分の場合は nifty に送信しているけど、Gmail その他の場合は適宜読み替えを。
cd /var/lib/pmg/templates#
vi ./main.cf.in
〜以下追記〜
relayhost = [smtp.nifty.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

一通り動作確認ができたら、LAN 内の postfix に設定してる OP25B 対策は不要なのでコメントアウトしておく。
PVE の各ノードや PBS のお知らせ専用 postfix も PMG にメールを送信するよう、main.cf に次の行を追加する。
relayhost = [192.168.1.109]:26
所感
あくまでも自己満足だけど、とりあえず以上で動作するハズ。
実際にスパムメールが届いたときにどうなるか気になる(まだ来てない)。
PVE,PBS,PMG と一通り整ったからなんとなくスッキリ。
コメント