検索
連載

SPAMメール徹底対策実用qmailサーバ運用・管理術(3)(2/3 ページ)

メールサーバ管理者にとって、SAPMは常に頭痛のタネだが逃げるわけにはいかない。今回紹介する方法を使って、メールサーバをSPAMから守ろう。

Share
Tweet
LINE
Hatena

対SPAMプログラムの利用

qmailの受信拒否リスト対応

 どうしても、設定の調整だけでは賄い切れない問題があります。先ほどの/var/qmail/control/badmailfromでは、事が起こるたびに対処を強いられることになります。これは、毎日のようにbadmailfromの編集を行うことを意味します。

 世界のメールサーバ管理者が、毎日同じような作業を行うのも非効率的です。そこで、共通のリストを作成して共有しようというのがMAPS RBL()です。このリストを利用してqmailで受け取り拒否を行うには、「rblsmtpd」を利用します。

注:Mail Abuse Prevention System Realtime Blackhole Listhttp://mail-abuse.org/

 rblsmtpdはucspi-tcp-0.88パッケージに含まれており、実はtcpserverをインストールした際にrblsmtpdも/usr/local/bin/rblsmtpdにインストールされています。ですから、新たにインストール作業を行う必要はなく、起動スクリプトに変更を加えるだけで使えます。第1回の最後で紹介したqmailスクリプトの該当の個所に、下記のような修正を加えます。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 また、Mail Abuse Prevention System LLC(http://mail-abuse.org/)にはMAPS RBL以外にも、ダイヤルアップ経由で送信されるSPAMメールの受け取り拒否を目的にしたMAPS DULフィルタ(http://mail-abuse.org/dul/)や、不正中継を許可しているメールサーバ経由で送信されたSPAMメールの受け取り拒否のためのMAPS RSS(http://work-rss.mail-abuse.org/rss/)があります。

 受信拒否リストには、MAPS以外にORDBhttp://ordb.org/)があります。これは、何度か形態を変えながら続いてきたORBSから派生したものです。こちらのリストを使用する場合は、下記のように参照サーバをORDBのものにします。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

iftoccを利用したフィルタリング

 次に、「mess822」の「iftocc」を使ってみましょう。mess822は、もともとメッセージを解析するためのツール群です。例えば、「822date」はメールからDateフィールドを抜き出し、「822header」は全ヘッダフィルードを取り出します。

 今回利用するiftoccは、所定のあて先がToやCcに含まれているかどうかの判定を行います。メールを送信するには、ToやCc、Bccいずれかのフィールドに相手のメールアドレスを記入する必要があるのはご存じだと思います。そこで、iftoccを使って自分あてのメールなのか否かを、ToまたはCcフィールドに自分のメールアドレスが指定されているかどうかで確認します。SPAMの中にはBccフィールドを利用して送信しているものがあるので、それを逆手に取ってフィルタを掛けるわけです。

 ではiftoccの導入手順です。ftp://ftp.jp.qmail.org/qmail/からmess822-0.58.tar.gzをダウンロードし、/usr/local/bin/にインストールします。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 フィルタを掛けるためには、各ユーザーのホームディレクトリに.qmailファイルを作成します。.qmailファイルは、ユーザー単位で配送方法を細かく制御するためのドットファイルです。sendmailの.forwardファイルと同様、転送やプログラムの起動も可能ですが、フォーマットは.forwardと異なるので注意が必要です。まず次の点を押さえておきましょう()。

  1. コメントは「#」で始める
    例:# this is a comment
  2. プログラムは「|」で始める
    例:| qbiff
  3. 転送は「&」で始める
    例:&someone@example.jp
注:qmailファイルの詳細については、http://www.jp.qmail.org/q103/jman5/dot-qmail.htmlを参照してください

 では、.qmailファイルを利用して実際に「To/Ccフィールドに自分のメールアドレスがなかった場合、つまりBccで送られてきた場合はメッセージ『I accept neither Bcc or ML』を相手に送り返し、To/Ccで送られたメールは受信する」ようにしてみましょう。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 /var/qmail/bin/bouncesayingは、

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

のように使用します。ここでは、iftoccをフルパスで指定して実行させます。exceptが付いているため、iftoccの結果の逆を判定結果として/var/qmail/bin/bouncesayingに渡します。つまり「To/Ccフィールドに自分のアドレスが含まれなかったら」が条件になり、その条件に合った場合は/var/qmail/bin/bouncesayingが実行され、指定されたメッセージが送り返されます。To/Ccフィールドに自分のアドレスが含まれていた場合、1行目は無視されて2行目が実行されます。すなわち、通常のメールとして./Maildir/に保存されます。

 では実際に、メールソフトで上記の設定を施したメールアドレスに対して別のメールアドレスを使い、Bccでメールを送信してみましょう。すると、次のようなエラーメールが戻ってくるはずです。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 しかしながら、この場合はメーリングリストからのメールも拒否されます。では「メーリングリストもちゃんと受信できる」ようにするにはどうしたらよいでしょうか? この場合はiftoccの引数にメーリングリストのアドレスを指定します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 自分のiftoccに引数を渡した場合は、自分のアドレスも明示的に指定することを忘れないでください。また、ドメイン名は大文字・小文字にかかわらず、アドレスとして一意に解釈されます。

 次に「To/Ccに自分のアドレスがないもの(つまりBccで送られてきたもの)は指定されたアドレスに転送し、それ以外を受け取るようにする」場合の.qmailを見てみましょう。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 ここでは、/var/qmail/bin/condredirectを使用しています。condredirectは次のようにして使います。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 判定結果が「0」を返した場合、condredirectはメール文を転送先のアドレスに転送し、以降の行は実行しません。判定結果がそれ以外(「111」を返すという条件もあります)なら、condredirectは「0」を返して以降の処理を続けます。 間違っても転送先のアドレスに自分のアドレスを指定しないでください。自分のアドレスを指定した場合、メールは送信サーバと受信サーバの間をループします(実際には、qmailの「loop」を防ぐ機能によりループはしません)。

 これで、Bccで送信されてきたものは転送され、それ以外はMaildirで受け取ります。

 逆に、「Bccで送られてきたものは受け取り、To/Ccで送られてきたものは転送する」ようにするには、

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

とします。では、「To/Ccに自身のアドレスがないものをゴミ箱行きにする」場合を見てみましょう。ゴミメールを集めるためのファイルを/各ホームディレクトリ/Maildir/trushとします(自動で生成されるので、作成する必要はありません)。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 trushはディレクトリでなく、mbox形式のファイルであることに注意してください。これで、Bccで送られてきたものはtrushファイルへ、To/Ccで送られてきたものは転送先のアドレスへ転送します。ゴミメールを蓄える必要がなく、そのまま削除しても構わない場合は次のようにします。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 これで、Bccで送られてきたものはtrushファイルへ残しもせず削除、To/Ccで送られてきたものは転送先のアドレスへ転送します。

 しかし、これでは転送か削除処理のどちらかが行われるだけで、送られたユーザーのMaildirには1通のメールも残りません。それなら、逆にゴミメール専用のあて先を作り、公開されたメールアドレスでは通常どおりメールを受け取るようにした方が実用的です。そこで、「Bccで送られてきたものはゴミ箱へ、To/Ccで送られてきたものを受け取る」ようにする場合を見ていきましょう。

 まずゴミ処理用アカウントを作ります。ここでは例として「trush」とします。trushユーザーのホームディレクトリの.qmailには、「#」とだけ記述します。これは無条件に削除することを意味します。次に受け取りたいユーザーの.qmailを下記のようにします。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 以上で完了です。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る