Postfixのフィルタリング設定 - スパム・迷惑メール対策、受信拒否方法。
対象:Linux Fedora, RedHat
main.cfに予めheader_checksとbody_checksがない場合があります。 その場合は、自分で追加します。 vi /etc/postfix/main.cf header_checks = regexp:/etc/postfix/header_checks body_checks = regexp:/etc/postfix/body_checks vi /etc/postfix/header_checks #Received Asia /^Received:.*\[211\.112\./ DISCARD /^Received:.*\[218\.39\./ DISCARD #Received Domain /^Subject:.*testtest/ REJECT /^Received:.*.com\.tw/ REJECT /^Received:(.from.a-net\.ne\.jp)/ REJECT #others /^X-Mail-Agent:.*(BSMTP DLL)/ DISCARD /^X-Mailer:(.AOL).*(for.Windows.US.sub)/ REJECT #From /^From:.*@yahoo\.fr/ REJECT /^From:.*@yahoo\.ca/ REJECT #To /^To:.*undisclosed-recipients/ REJECT #Subject /^Subject:(.Re:)$/ REJECT /^Subject:(.Re:Re:)$/ REJECT /^Subject:(.Re:Re:Re:)$/ REJECT #netsky /name=.*\.scr/ REJECT vi /etc/postfix/body_checks #spam /^(|[^>].*)livedear.com/ REJECT #LogWatch if !/(reject: header|reject: body)/ /^(|[^>].*)sample.com/ REJECT /^(|[^>].*)http:\/\/[0-9a-zA-Z!-~]+\.ch/ REJECT /^(|[^>].*)http:\/\/[0-9a-zA-Z!-~]+\.example\.net/ REJECT end if *root宛てにLogWatchのメールを送っている場合、 body_checksでREJECTすると、LogWatchのメールもREJECTされ、 エラーメールで届いてしまうので、if文などで制御する *マニュアルではendifとなっているがendifだとpostmap時にエラーになる end ifか何もかかないとエラーが出ず、一応動作する if以降の行は、行頭にスペースやタブを入れない スペースやタブは、前行の続きとみなされる 設定後、postmap /usr/sbin/postmap /etc/postfix/header_checks /usr/sbin/postmap /etc/postfix/body_checks 設定をリロード service postfix reload 処理方法について OK:受信する(Ver2.1以降はDUNNO推奨) IGNORE:一致した行をヘッダから削除 REJECT:受信拒否して、エラーメールを返す DISCARD:受信して破棄する
・例 vi /etc/postfix/main.cf smtpd_client_restrictions = permit_mynetworks, reject_rbl_client relays.ordb.org,(閉鎖された) reject_rbl_client all.rbl.jp, reject_rbl_client bl.spamcop.net, reject_rbl_client list.dsbl.org, reject_rbl_client sbl-xbl.spamhaus.org, permit関連サイト
・procmailのパス確認 which procmail /usr/bin/procmail