postfixで複数ドメインを受信する設定したらSPAMまみ

5 min read読了の目安(約5200字

postfixでバーチャルドメイン設定をせず複数ドメインのメールを受信

割と今更感がありますが「postfixで複数ドメインを受信する」が簡単なので設定してみます。
なんで?って言われるとメール専用のドメインを使っていたのですが、VPSが先に切れてしまい余分なお金出したくないなーって思ってのことなのです(素直にバーチャルドメインで設定すればいいのだが)。
あと「複数ドメインを受信する」だけでは、もったいないので SPAMメール対策、fail2ban で BAN する方法も書いておきます。

OS入れ替える前は、一応色々と設定してました。
Postfixの設定の巻

postfixで複数ドメインを受信する

とりあえず下記のサイトを参考にしてみる。同じことやっているので突っ込みはなしでお願いしたい。
postfixでバーチャルドメイン設定をせず複数ドメインのメールを受信
postfixで複数ドメインを受信する

postfixの設定は既に終わっているということを前提で、domain.com という追加するドメインを追加したい場合は、/etc/postfix/main.cf の mydestination に domain.com と追加すればよい。あと postfix の再起動を忘れずに。

mydestination = $myhostname, localhost.$mydomain, localhost, domain.com

とりあえずこれで admin@domain.com ⇒ 元ドメインの admin@xxxxxx.com にも配送されるって寸法。
postfixのバーチャルメールボックスについて詳しく知りたい場合は、下記サイトが詳しく説明している。
Postfix + dovecot バーチャルメールボックスの設定を深堀する

メールサーバーの第三者中継チェック

気になりだすと気になるメールの中継。これ自分が加害者になるので洒落にならないので一度は確認しておいた方がよい。
チェックできるサイトがあるのでそこで確認する。
第三者中継をチェックする ★おすすめ
open relay checker

SPAMまみれになっていた…

とりあえずSPAMメール対策として smtpd_client_restrictionssmtpd_sender_restrictions を設定しておく。
これだけでもだいぶマシになるが、あまりにウザイSPAMさんは ドメイン or IPアドレスで拒否するといいが…(これ以上にうざうざさん対応が必要だった)。

smtpd_client_restrictions = permit_mynetworks,
                              reject_rbl_client spamcop.net,
                              reject_rbl_client dynablock.wirehub.net,
                              reject_rbl_client opm.blitzed.org,
                              reject_rbl_client relays.visi.com,
                              reject_rbl_client sbl.spamhaus.org,
                              permit

smtpd_sender_restrictions = reject_unknown_sender_domain

ドメイン or IPアドレスで拒否の方法は下記を参照
Postfixでspamメール送信元・送信者による制限の巻

unknown さんが消えない事例(発生編)

/var/log/maillog をみているとなんだか怪しいログが…しかも相当アタックがある。

Mar 22 11:08:43 ns postfix/smtpd[7001]: connect from unknown[92.118.38.42]
Mar 23 11:09:00 ns postfix/smtpd[7001]: warning: unknown[92.118.38.42]: SASL LOGIN authentication failed: UGFzc3dvcmQ6

この connect from unknown ですが、どうやら smtpd_client_restrictionsreject_unknown_client(逆引きができないホストからのメール送信は許可しない)を指定するといいらしい。
スパムメールを転送しないようにする

smtpd_client_restrictions = permit_mynetworks,
                              reject_rbl_client spamcop.net,
                              reject_rbl_client dynablock.wirehub.net,
                              reject_rbl_client opm.blitzed.org,
                              reject_rbl_client relays.visi.com,
                              reject_rbl_client sbl.spamhaus.org,
                              reject_unknown_client,  ★これ
                              permit

結果、相変わらず…発生している。ブロックされないのかい!!と叫んでみる。

fail2ban を入れて不正アクセス対策してみる ※unknown さんが消えた(解決編)

どうやら unknown さんというか postfixに対してのアタック「SASL LOGIN authentication failed: authentication failure」ですが fail2ban 使うと楽に対応できるらしいので導入してみます。
CentOS8 では、まだ fail2ban は標準でインスコできないので EPEL を先に使えるようにしておく。

# dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# dnf -y install fail2ban
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# vi /etc/fail2ban/jail.local

設定ファイルを編集する。とりあえず今回 postfix だけなのでそこを追加&修正していく。

[postfix-sasl]
enabled = true
filter   = postfix[mode=auth]
port     = smtp,465,submission,imap,imaps,pop3,pop3s
action = iptables-multiport[name=postfix-sasl, port="smtp,smtps", protocol=tcp]
logpath  = /var/log/maillog
bantime  = 604800
findtime = 86400
maxretry = 2

fail2ban を再起動し問題の unknown さんが /var/log/maillog に表示されないことを確認する。

fail2ban で BAN されていることを確認(確認編)

fail2ban は、 iptable で問題のアタック元を弾いているようです。恒久的に設定されるのかと思ったら fail2ban を停止すれば消えるらしい。

こんな感じで設定されるのね。

# fail2ban-client status postfix-sasl
Status for the jail: postfix-sasl
|- Filter
|  |- Currently failed: 3
|  |- Total failed:     1611
|  `- Journal matches:  _SYSTEMD_UNIT=postfix.service
`- Actions
   |- Currently banned: 7
   |- Total banned:     26
   `- Banned IP list:   92.118.38.66 92.118.38.82 213.251.5.208 91.134.145.129 193.56.28.130 78.128.113.94 45.142.195.2

特にハマることは無かったですが fail2ban は、外にも設定できるサービスがあるので都度設定していくといいかも。

fail2ban 参考にしたサイト様
fail2banをCentOS8にインストールする
fail2banでpostfixの認証失敗回数に応じて恒久的に送信元IPアドレスをbanする
【CentOS7】ssh&postfixへの不正アクセス対策-fail2ban
アタック対策fail2ban