SPAM対策

最終更新日:2006-03-16

はじめに、

現在、SPAMとして送られてくるメールには、およそ2つのタイプに分類できます。 1つは、フリーメール(例えばYahooやHotMailなど)やレンタルのメールサーバ(多くは海外のレンタルサーバ)などから送られてくるメールです。 これらのメールは内容をみて貰う事を目的にしているため、多くは商品の説明(薬、医師、会計事務所、ポルノ、etc)しており、内容的には悪質ではありませんが送りつけられてくる立場からするとゴミ(ジャンク)メールの山を作る原因となります。
 もう一つのタイプは、DDNSなどを利用して正規のメールサーバを使わず、送り主独自のメールサーバを使ったり、上記のような正規なメールサーバを使うもののメールアドレスを詐称して大量のメールを送りつけてくるものです。 送り主のメールアドレスを詐称する事から、これに対する返事を貰うことは目的としておらず、多くはメールの内容もフィッシングや不正品を販売するWebサイトへ誘導する為、更にはメールにウィルスを添付して送りつけるくるなど、内容的には悪質である可能性が高いものです。
これらの事を踏まえた上で、以下ではSPAM対策として有効な方法について説明していきます。

1.送信元アドレスのチェック

まだ書いてません

2.LDAPの利用

スルーメールサーバを経由して内部のメールサーバへ転送するような構成においては、SPAMに関する問題が発生する可能性があります。 以下のような構成においてスルーメールサーバには、ユーザアカウントが登録されていないものとします。
この場合、SPAMメールとして、存在しない宛先(xxxx@example.jp)へメールがきたものとします。
この場合、ドメインとして正しいために、スルーサーバではこれを正しいメールとして受けてしまいます。
内部メールサーバに届いた段階で、初めて存在なしユーザ宛のメールと判断できる訳ですが、このようなメールは通常送り主に「ユーザ不明」として返却される事になります。しかし、SPAMメールの場合には送り主のメールアドレス自体が詐称されている可能性が高く、その場合にはメールを相手に送り返す事ができずに暫くメールサーバに滞留してしまう可能性があります。
滞留メールが数件ならさほど問題はありませんが、もしこのようなメールが大量に送られてくる場合には、その処理のためにメールサーバに大きな負担がかかる危険性が出てきます。

このような事を避けるためには、スルーサーバにメールが来た段階で、送り先が正規のメールアドレスかどうか確認して、実在するアドレス宛のメールでなかった場合には、その時点でメールの受け取りを拒否するようにすれば、メールサーバに負担をかけずに済みます。 しかし、DMZ上のメールのサーバではクラッキングの危険があるので、ユーザIDを登録する事は出来る限り回避する方が無難です。 そこで、内部にLDAPサーバが有る場合にはこれを利用してメールの宛先を確認する方法について述べます。

2−1.Postfixのモジュール確認

# postconf -m [Enter]
を実行してモジュールを確認してください。 もし表示されたpostfixのモジュールの一覧に "ldap" があれば、そのpostfixはそのままでLDAPの利用が可能ですが表示されない場合にはpostfixでLDAPが利用できるようにコンパイルし直す必要があります。
LDAPを利用できるようにするにはpostfixのコンパイルを
# make tidy [Enter]  
# make makefiles CCARGS="-I/usr/local/include -DUSE_SSL -DHAS_LDAP" \
AUXLIBS="-L/usr/local/lib -lldap -llber -lssl -lcrypto" [Enter]
# make [Enter]
# make install [Enter]
の手順でコンパイルしていくと良いでしょう。

2−2. postfixのLDAP設定

スルーメイルサーバ上で、LDAPによる宛先アドレスの確認を行うには以下のように設定を行います。
(DMZ-Mailサーバの /etc/postfix/main.cf )
# dmz-ms.example.jp の main.cfの内容
#
myhostname = dmz-ms.example.jp
mydomain = example.jp
myorigin = $mydomain
inet_interfaces = all
mydestination = localhost.$mydomain, localhost
mynetworks_style = subnet
mynetworks = 10.1.1.0/24, 127.0.0.0/8, 192.168.1.0/24
relay_domains = example.jp
relayhost = [192.168.1.5]
relay_recipient_maps = ldap:/etc/postfix/ldap.cf
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
message_size_limit = 0
mailbox_size_limit = 0
(DMZ-Mailサーバの /etc/postfix/ldap.cf )
server_host = 192.168.1.7
search_base = cn=users,dc=robata,dc=org ----- 検索ベースは利用するLDAPサーバに合わせてください
query_filter = (mail=%s)
result_attribute = mail
ここでの設定で重要な部分は、relay_recipient_maps による ldap サーバの設定です。 この例では、LDAP用の設定情報として /etc/postfix/ldap.cf ファイルの情報を使って検索する事を指定しています。 尚、この記述方法はPostfix2.1からの記述方法で、それ以前のpostfixでは記述形式が違うので注意してください。
この設定を行うことで、スルーメールサーバ上で、送信先アドレスにLDAPサーバに登録されていなメールアドレスが使われた場合にそのメールを拒否するようになります。
ldap.cf への記述内容は利用するLDAPサーバによって違ってくる可能性がありますので、それらについてはLDAPサーバの仕様を良く理解して設定をしてください。

Home

Mailwebmaster@robata.org

Copyright© 1998-2003 ROBATA.ORG