ユーザ環境整備
maildirmakeコマンドでメイルボックスの作成自動化
# /usr/sbin/maildirmake /etc/skel/Maildir
このコマンドを実行しておけば、新規ユーザを追加した時に、ユーザのホームディレクトリ配下にMaildirというメイルボックスが自動生成される。
# /usr/sbin/maildirmake /etc/skel/Maildir
このコマンドを実行しておけば、新規ユーザを追加した時に、ユーザのホームディレクトリ配下にMaildirというメイルボックスが自動生成される。
フィルタをかけて、メールの受け取り拒否と不正中継の防止 |
まずはじめに、/etc/postfix/header_checks というファイルを作成します。
メールヘッダの文字列で受け取り拒否 # vi /etc/postfix/header_checks ← 設定ファイル作成 i キー(入力モード) ※ 赤字の部分は例ですので各自の環境に合わせて変更してください。 X-Mailer: 大量配信を目的とした特殊なメーラーや、バージョン等に特徴のあるメーラーを受け取り拒否するように設定。 /^X-Mailer:.*DM Mailer/i REJECT /^X-Mailer:.**ASAYAN/i REJECT Subject: ウィルスメールや勧誘、広告メールのタイトルとして記載されている文字列を記載します。 /^Subject:.*Re:Sample/ REJECT /^Subject:.*Re:Document/ REJECT ※ 件名に「未承諾広告※」と表示されているメールの受信を拒否する場合、以下を追加 /^Subject:\ =\?iso-2022-jp\?B\?GyRCTCQ\+NUJ6OS05cCIo.*/ REJECT /^Subject:\ =\?ISO-2022-JP\?B\?GyRCTCQ\+NUJ6OS05cCIo.*/ REJECT From: と Return-Path: それぞれ受け取り拒否したいメールアドレスを記載します。 メールアドレスの一部としてホスト名や、ドメイン名や、ドメインネームを指定すると、その文字列を含む物全て拒否します。 <#.*@.*>はそれぞれメールアドレスが含まれていない場合に適応されます。 /^From:.*<#.*@.*>/ REJECT /^From:.*@hotomail.com/ REJECT /^From:.*email.it/ REJECT /^Return-Path:.*<#.*@.*>/ REJECT /^Return-Path:.*@msn.com/ REJECT name 添付ファイルの拡張子を記述します。 特定の拡張子の添付があるメールの受け取りを拒否できます。 /name=.*\.scr/ REJECT /name=.*\.pif/ REJECT /name=.*\.exe/ REJECT Data グリニッジ標準時を利用して海外からのメールを拒否(日本は+0900) /^Date:.*-0500/ REJECT /^Date:.*-0600/ REJECT /^Date:.*-0700/ REJECT /^Date:.*-0800/ REJECT /^Date:.*-0900/ REJECT /^Date:.*+0800/ REJECT Received メールヘッダのReceived行を非表示化する場合下記を追加 /^Received:/ IGNORE 記載したら Esc キー(コマンドモード):wqで保存 |
次に /etc/postfix/body_checks と言うファイルを作成します。
メール本文の文字列で受け取り拒否 # vi /etc/postfix/body_checks ← 設定ファイル作成 i キー(入力モード) 本文文字列 メール本文に含まれる、マルチビジネスのお決まり文句や、URL、メールアドレス、電話番号、住所等の一部を記載すると効果大です。 /^(|[^>].*)diamond.exec.ws/ REJECT /^(|[^>].*)090-1111-11/ REJECT /^(|[^>].*)615-0042/ REJECT /^(|[^>].*)mail.od.ua/ REJECT 記載したら Esc キー(コマンドモード):wqで保存 |
次に/etc/postfix/recipient_checks.regというファイルを作ります。
ユーザー名@ドメイン名、又はユーザー名@ホスト.ドメイン名といった、FQDNに従ったメールアドレス以外の受け取りを拒否します。 # vi /etc/postfix/recipient_checks.reg ← 設定ファイル作成 i キー(入力モード) /[@!%].*[@!%]/ 550 Please use user@domain address forms only. ← 追記 記載したら Esc キー(コマンドモード):wqで保存 |
次に/etc/postfix/main.cfを編集します。
# vi /etc/postfix/main.cf ← 設定ファイル編集 i キー(入力モード) header_checks = regexp:/etc/postfix/header_checks ← #を外して有効に body_checks = regexp:/etc/postfix/body_checks ← 追記 最下部に以下を追記していきます。 ,カンマの付け忘れに注意してください。 smtpd_helo_required = yes disable_vrfy_command = yes 外部ブラックリストに登録されているメールの受け取り拒否 記載したら Esc キー(コマンドモード):wqで保存 # /etc/rc.d/init.d/postfix restart ← 設定終了後にPostfix再起動 ※ header_checks、body_checks、recipient_checks.reg 等のファイルのみ編集しても Postfix を再起動する必要があります。 |
上記設定の詳細
※1
permit_mynetworks
自ネットワークに対して無条件で接続許可
※2
reject_rbl_client relays.ordb.org
ORDBでオープンリレーを排除
※3
reject_rbl_client sbl-xbl.spamhaus.org
スパムハウスのSBLとXBLでスパムとオープンプロキシを排除
※4
permit
上記の条件にマッチしなければ許可
※5
maps_rbl_reject_code = 550
default_rbl_reply = $rbl_code <$recipient>: Recipient address rejected: User unknown in local recipient table
smtpd_client_restrictionsの部分の記述だけではRBLにてメール排除していることがスパマーに知られてしまいます。
RBLでスパムを排除した際のエラーコードとエラーメッセージを設定しておく事で、あて先ユーザーが存在しない為に
発生したエラーに見せかけます。
ただしこの設定では、メールログにも同じ記述が記載されるので、ユーザー不在かスパム排除か区別できなくなります。
区別する為に目印をエラーメッセージの末尾の「table」を「tabeles」等に変更しておけば、それをキーワードにRBLにて
排除されたログを見つけることが可能です。
上記設定をしてRBLにて排除されたログを確認するには # grep -i tables /var/log/maillog ← メールログから「tables」を含むログを抽出 Mar 22 17:02:57 Linux postfix/smtpd[26076]: 70644BA2B3: reject: RCPT from unknown[124.42.3.211]: 550 <xxxx@1-max.net>: Recipient address rejected: User unknown in local recipient tables; from=<info@mail.yuytt.com> to=<xxxx@1-max.net> proto=SMTP helo=<mail.yuytt.com> |
※6
regexp:/etc/postfix/recipient_checks.reg
FQDNに従ったメールアドレス以外の受信拒否
※7
reject_non_fqdn_recipient
受信者がFQDNに従ったメールアドレス以外拒否
※8
reject_unauth_destination
$mydestination, $inet_interfaces, $virtual_maps, $relay_domains のパラメータ値に
リストされたアドレス宛かチェックし、それ以外は拒否
※9
reject_unknown_sender_domain
未解決ドメインの受け取り拒否
※10
reject_non_fqdn_sender
送信者がFQDNに従ったメールアドレス以外拒否