Postfix セットアップ

文章



ユーザ環境整備

maildirmakeコマンドでメイルボックスの作成自動化

# /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
外部ブラックリストに登録されているメールの受け取り拒否
smtpd_client_restrictions =
permit_mynetworks, ← ※1
reject_rbl_client relays.ordb.org, ← ※2
reject_rbl_client sbl-xbl.spamhaus.org, ← ※3
permit ← ※4 ※5 外部ブラックリスト(RBL)にて受信拒否した場合の応答を変更
maps_rbl_reject_code = 550
default_rbl_reply = $rbl_code <$recipient>
: Recipient address rejected
: User unknown in local recipient table
smtpd_recipient_restrictions = permit_mynetworks, ← ※1
regexp:/etc/postfix/recipient_checks.reg, ← ※6
reject_non_fqdn_recipient, ← ※7
reject_unauth_destination ← ※8
smtpd_sender_restrictions = reject_unknown_sender_domain, ← ※9
reject_non_fqdn_sender ← ※10

記載したら 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に従ったメールアドレス以外拒否




パートナー



ニュースリリース | 会社概要 | プライバシーポリシー | リンク | ©2002-2008 Integrated Systems Co. Ltd. All Rights Reserved.