Kelly
This is Kelly from Jiangsu Longcheng Casting Machinery with more than 15 years’ experience, our core competence is shot blasting machine and sand blasting room.
中国から、レアメタル買わないかとか、ショットブラスト買わないかとか、しょーもないメールがサイトの連絡先に届きます。宛先はこのサイトではなくて、Tsubopediaの方ですが。Kellyはショットブラスト担当ですw ちなみにレアメタルはJamesが担当でした。
そもそもメールサーバーを止めればいいだけの話なんですが、SSL化の際にドメイン認証のために使っているのと、アドセンスやアマゾンアフィリエイトではコンタクト先は必須なので、安易に止めるわけにもいかず、転送先のメールボックスにルール設定して削除してきましたが、ちょっと手間をかけて根本的に対策してみようかと、だいたい、この手のSPAMと呼ばれるメールは、送信者のアドレスと、FROMアドレスが不一致であることが大半です。勝手によそのメールサーバーを経由して送信するのが常套手段なのです。
ヘッダーを見ると、以下のようにotte.comというカナダのプロバイダのアドレスです。
Sender:Kelly <bnqhkbhd@otte.com>
ところが、本当の送信元は、163.comという中国のプロバイダです。
smtp.mailfrom=bnqhkbhd@otte.com; dkim=none header.d=163.com; x-hmca=none header.id=ci760719@163.com
そもそも、中国のプロバイダからのメールなんて、SPAMしか来ないので、完全にブロックしていますが、通常の163.comをブロックするだけでは、otte.comを偽装(経由)されると通過してしまいます。otte.comをブロックすると、また新たな実在するドメインを偽装して送ってきます。
対策をするモジュールは、postfixで、基本的な設定としては、存在しないドメインからのメールを受信しない、とかです。この設定をすると2週間ぐらいは防げます。SPAMを送りつける時、適当なアドレスから送ると、postfixで弾いてくれますが、2週間ぐらいすると、実在するアドレスを勝手に使って送りつけるようになります。ここからイタチごっこが始まりますw
追加で対策したのは、SPF、Sender Policy Frameworkと呼ばれるSPAM対策です。FROMアドレスをいかに偽装しようとも、送信元のアドレスは偽装しようがないので、その両者を比較して偽装アドレスからのメールを拒否します。
モジュール自体はyumを使ってインストールします。
yum install pypolicyd-spf
AWS上のAmazon Linuxでは以下のモジュールがインストールされます。
================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: pypolicyd-spf noarch 1.3.2-1.el6 epel 44 k 依存性関連でのインストールをします: python-pydns noarch 2.3.6-1.el6 epel 39 k python-pyspf noarch 2.0.11-1.el6 epel 47 k python26 x86_64 2.6.9-2.88.amzn1 amzn-main 5.8 M python26-ipaddr noarch 2.1.9-5.5.amzn1 amzn-main 58 k python26-libs x86_64 2.6.9-2.88.amzn1 amzn-main 697 k
Pythonは既にインストールされているはずなのですが、ここであえてバージョン違いのPythonがインストールされます。これが原因で後で少しハマりました。正常にインストールされたことを確認するために、Pythonコマンドで確認しますが、エラーが出ます。
/usr/bin/python /usr/libexec/postfix/policyd-spf /etc/python-policyd-spf/policyd-spf.conf
テスト系では何のエラーも出なかったのに、本番系ではエラーが出てしまいます。
Traceback (most recent call last): File "/usr/libexec/postfix/policyd-spf", line 35, in <module> import spf ImportError: No module named spf
標準で入っているのはPython2.7でPythonのリンク先は2.7となっていますが、policyd-spfはPython2.6が互換バージョンだったことが原因です。/usr/bin/python2.6と指定することで、先ほどの確認もエラーが出なくなります。実際の起動はPostfixから行われるので、/etc/postfix/master.cfの設定でpython2.6を指定するように変更します。master.cfの最終行へ追加します。
policy-spf unix - n n - 0 spawn user=nobody argv=/usr/bin/python2.6 /usr/libexec/postfix/policyd-spf /etc/python-policyd-spf/policyd-spf.conf
main.cfへは次の設定を追加します。
smtpd_recipient_restrictions = == 途中省略 == check_policy_service unix:private/policy-spf == 最終行へ追加 == policy_time_limit = 3600
Postfixを再起動すれば、設定は完了です。今回はデフォルトの「Fail」設定のまま行くので、設定ファイルは変更していませんが、確認しながら行く場合は、まずは状況を見て、「False」という選択もあります。
# For a fully commented sample config file see policyd-spf.conf.commented debugLevel = 1 defaultSeedOnly = 1 HELO_reject = Fail Mail_From_reject = Fail PermError_reject = False TempError_Defer = False skip_addresses = 127.0.0.0/8,::ffff:127.0.0.0/104,::1
Gmailなどでメールを送って見て、maillogにSPF-PASSと記録されていればOKだと思います。
昨日、鳥取で大きな地震があって、お隣の島根県でも出雲市は震度4を記録、古い実家が崩れていないか確認のため、朝一で出雲入り。とりあえず見える範囲では無事でした。