タグ別アーカイブ: postfix

PostfixでOP25B対応@so-net

OP25BはOutbound Port 25 Blockingの略でまあ内容はそのまま25番ポートの外向きの接続をブロックするってやつで、要するに直接SMTPを外部にしゃべるなってやつです。
でまあ、代わりにプロバイダが用意しているMTAにリレーして、代理配送を頼むっていうお話。

今まではrelayhostにmail.au-one.netだかを設定していて問題なかったんだけども、なんか先日突然ブロックされました。
KDDIなんだからええやんと思うわけですが、方針を変えたようです。
ので、プロバイダはso-netなので切り替えようとしたわけですが、so-netではrelayhostを指定するだけではAuthentication requiredが帰ってくる。
SMTP認証を要求されるということでして、その設定も必要に。
ところがプロバイダのメールなんて使ってないし、IDもなんもかんも覚えてない上に、書類を紛失して再発行依頼する羽目に。
書類が届いたところでようやく設定です。

main.cf

relayhost = [mail.so-net.ne.jp]:587

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtpauth
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = LOGIN, PLAIN, CRAM-MD5

smtpauth

[mail.so-net.ne.jp]:587 xxxxxx@xxx.so-net.ne.jp:PASSWORD
# chmod 640 smtpauth
# postmap smtpauth

をしてpostfix再起動。

# echo test | mail xxx@example.com

とかやって外部にメール配送できるかチェック。
ダメだったら/var/log/mail.logとかでどこでこけてるか確認して何とか。

Postfixで迷惑メール対策

最近スパムが多くて、良いスパム対策はないかと物色。
で、なんか売り文句によると99%のスパムメール撲滅できるというものが。
基本的なコンセプトはこちらに詳しく書いてある。

  • メールサーバがメール中継サーバからのSMTPアクセスは受け入れるがエンドユーザーコンピュータからの直接のSMTPアクセスは拒絶するという単純なもの
  • SMTPアクセスをかけてきたクライアントのFQDNの特徴に基づいて、クライアントがメール中継サーバか、エンドユーザー回線につながったコンピュータかを推定することができる
  • うまく管理されているメール中継サーバのほとんどは、逆引きで得られるFQDNを持つ。逆引きFQDNのないIPアドレスからのSMTPアクセスは、少しの例外を除いて拒絶すればよい。
  • 正規表現を使うことによって、エンドユーザー用回線の逆引きFQDNとメール中継サーバの逆引きFQDNを区別する
  • メールサーバがこれらの規則によってSMTPアクセスを拒絶する時は、「後で再試行せよ」を意味する応答コード「450」を 返すべきである。そうすれば、これらの規則のいずれかに引っかかる正当なメール中継サーバを、後で述べるホワイトリスト(許可リスト)を作ることによって 救済することができる。
  • HELOコマンドが宛先サーバのIPアドレスまたは受信者のドメイン名を通知している
  • 送信者ドメインの検索失敗
  • 内容の検査

なるほどね。
エンドユーザ回線を拒絶するのはでかそうだ。
この方式をS25R(Selective SMTP Rejection)方式というそうだ。
そして、この方式とは別にGreylistingという方式がある。
Greylistingは簡単に言えば、再送要求を一旦返して、ちゃんと再送してきたものを受け取る方式。
S25RとGreylistingを組み合わせた方式がRgrey方式として紹介されている。
また、意図的な応答遅延を行うことで配送タイムアウトが通常のMTAよりも速いものを切り落とすtarpittingという方式もある。
これは、通常、スパム業者は大量のメールを配送する関係から、応答の遅いMTAには配送を早々とあきらめるよう設定されていることが多いことを利用したもの。
S25R+tarpittingによる、Starpitという手法も紹介されている。
そして、全部ごった煮のパターン、S25R + tarpiptting + Greylistingを組み合わせたtaRgrey方式が紹介されていた。
taRgrey方式の簡単な説明は以下の通り。

taRgreyとは、メールサーバ上でスパムやウイルスメールを排除するためのフィルタの手法で、 S25Rとtarpittingとgreylistingというスパム判定手法を組み合わせて使うというものです。
S25Rにより、動的IPっぽいFQDNからの接続からは怪しいと判断し、tarpitting(応答の遅延)を行います。tarpittingを待ちき れずに送信元が接続を切った後、再度送ってきた場合にはgreylisting(再送のチェック)により救済します。S25Rとtarpittingと greylistingと、全てのフィルタを抜けれなかったものだけがスパムとして排除されます。

さて、じゃあtaRgrey方式で、といきたいところだが、ここにかかれている方法はパッチを当てなければならない。
aptでパッケージ管理している関係上、できるだけdebian非公式パッチは当てたくない。
なので、パッチを使わないで実装する方向とする。

ということでどこでチェックしようかpostfixの設定を眺めることしばらく。
smtpd_recipient_restrictionsでやるのがいいかなあ、という結論。
PostfixでのGreylistingはpostgreyを使う。
ホワイトリストは許可して、S25R方式で怪しい奴らにgreylistingをかける。
それを通ったものにはtarpittingをかける。
という流れにする。

postgreyをインストール。

# aptitude install postgrey
/etc/default/postgrey
POSTGREY_OPTS="--inet=127.0.0.1:10023"

127.0.0.1をつけないとipv6でbindしてた。
いや別にいいんだけど。

main.cf
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_client_access regexp:$config_directory/white-list.txt,
check_client_access regexp:$config_directory/permit_client_nots25r,
check_policy_service inet:127.0.0.1:10023,
check_client_access regexp:$config_directory/tarpitting,
permit
white-list.txt

http://www.gabacho-net.jp/anti-spam/white-list.txtのものを使用
permit_client_nots25r
/.(internetdsl|adsl|sdi).tpnet.pl$/ WARN
/^user.+.mindspring.com$/ WARN
/^[0-9a-f]{8}.(.+.)?virtua.com.br$/ WARN
/.catv.broadband.hu$/ WARN
/[0-9a-f]{4}.[a-z]+.pppool.de$/ WARN
/.dip[0-9]+.t-ipconnect.de$/ WARN
/.dip.t-dialin.net$/ WARN
/.dyn.optonline.net$/ WARN
/.(adsl|cable).wanadoo.nl$/ WARN
/.ipt.aol.com$/ WARN
!/(^unknown$)|(^[^.]*[0-9][^0-9.]+[0-9].*.)|(^[^.]*[0-9]{5})|(^([^.]+.)?[0-9][^.]*.[^.]+..+.[a-z])|(^[^.]*[0-9].[^.]*[0-9]-[0-9])|(^[^.]*[0-9].[^.]*[0-9].[^.]+..+.)|(^(dhcp|dialup|ppp|[achrsvx]?dsl)[^.]*[0-9])/ OK
/./ WARN
tarpitting
/./ sleep 65

main.cfでのsmtpd_recipient_restrictionsで基本的な認可のあとに
ホワイトリストによる認証(check_client_access regexp:$config_directory/white-list.txt)
S25RでOKなものの認可(check_client_access regexp:$config_directory/permit_client_nots25r)
微妙なやつらをpostgreyでgreylistチェック(check_policy_service inet:127.0.0.1:10023)
それも抜けたのはtarpitting(check_client_access regexp:$config_directory/tarpitting)
という感じ。

設定してからしばらくログ眺めてたけど良い感じでスパムをブロックしてくれている。
SPFの設定もしようかと思ったけど、あっちは転送時にfailしたりしちゃうことがあるみたいだから、とりあえず今回はやめておいた。
postfix-policyd-spfパッケージ入れてちょいちょいいじれば使えそうなんだけどね。

メールが飛ばない

サーバ機をうちに輸送してきたはいいが、メールが飛ばないことに気がついた。
うちではpostfixとcourierを使っているんだけども、受信はできていたのでトラブルに気づいていなかったのだが、fmlでメーリングリストも運用していて、そのメールに返信しようとしたらメールが飛ばなくなっていることに気がついた次第。

続きを読む メールが飛ばない