Postfix設定 · 2 min read · Sep 22, 2025
ISPConfig 3のためのPostfixの強化
ISPConfig 3のためのPostfixの強化
著者: Jesús Córdoba
メール: j.cordoba [at] gmx [dot] net
フォーラムユーザー: pititis
バージョン: 1.2
このチュートリアルの目的は、ISPConfigによって使用されるメールサーバーPostfixを強化することです。認証されたユーザーが信頼されるインターネットメールサーバー向けです。この設定により、メールキューに入る前に大量のスパムを拒否し、多くのシステムリソースを節約し、スパマーやスパムボットネットに対して強力なメールサーバーを構築します。 さあ、始めましょう。
逆DNS (DNS PTRレコード)
rdnsを設定するには、2つの状況があります。
あなたのISPが自分で変更することを許可しています。コントロールパネルを確認してください。
あなたのISPが変更を許可していません。リクエストを含むメールを送信してください。
rdnsレコードをサーバーにポイントするか、要求してください。例:
server.example.com
コマンドhostを使用してrdnsを確認できます:
root@server / # host 149.20.4.69 69.64-27.4.20.149.in-addr.arpa ドメイン名ポインタ pub2.kernel.org.dnsは変更を伝播させる必要があることを忘れないでください。
ドメインのSPF (DNS TXTレコード)
SPFは、送信者のIPアドレスを検証することによって、メールスプーフィングという一般的な脆弱性を検出し、メールスパムを防ぐために設計されたメール検証システムです。
spfを設定するには、まずdnsゾーンにTXTレコードを追加する必要がありますが、最初にここでレコードを生成できます: http://www.mailradar.com/spf/
spfの結果をコピーし、次にISPConfig -> dns -> zones -> ドメイン名をクリック -> recordsタブをクリック -> TXTをクリックします。
ホスト名 -> example.com. (末尾にドットを付けて!)
テキスト -> ここにspfの結果を貼り付けます(” “なし)。
例: v=spf1 a mx ptr ip4:11.222.333.444 -all …そして保存をクリックします。
dnsは変更を伝播させる必要があることを忘れないでください。
Postfix main.cf
/etc/postfix/main.cfに何かを追加/変更しましょう。
Helo制限:
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostnameHelo制限の実行:
Jan 12 01:57:08 server postfix/smtpd[4687]: NOQUEUE: reject: RCPT from unknown[186.43.77.153]: 450 4.7.1 Client host rejected: cannot find your hostname, [186.43.77.153]; from=
<メールアドレス> to=<メールアドレス> proto=ESMTP helo=<[186.43.77.153]>
Jan 8 00:32:22 server postfix/smtpd[17504]: NOQUEUE: reject: RCPT from 201-93-87-2.dial-up.telesp.net.br[201.93.87.2]: 504 5.5.2 : Helo command rejected: need fully-qualified hostname; from=<メールアドレス> to=<メールアドレス> proto=ESMTP helo= 厳格なRFC:
strict_rfc821_envelopes = yesクライアント制限:
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname, check_client_access mysql:/etc/postfix/mysql-virtual_client.cf受信者制限:
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unknown_recipient_domainデータ制限:
smtpd_data_restrictions = reject_unauth_pipeliningSmtpd遅延:
smtpd_delay_reject = yesPostfixをリロードするのを忘れないでください:
/etc/init.d/postfix reloadPostfixのためのSPFチェック (DebianおよびUbuntu)
spfパッケージをインストール:
apt-get install postfix-policyd-spf-pythonまたは
apt-get install postfix-policyd-spf-perlこれを/etc/postfix/main.cfに追加:
policy-spf_time_limit = 3600sそして、smtpd_recipient_restrictionsの最後にcheck_policy_service unix:private/policy-spfを追加:
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, reject_unknown_recipient_domain, check_policy_service unix:private/policy-spf次にmaster.cfを編集し、最後にこれを追加します(Pythonバージョン用):
policy-spf unix - n n - - spawn
user=nobody argv=/usr/bin/policyd-spf または、Perlバージョン用:
policy-spf unix - n n - - spawn
user=nobody argv=/usr/sbin/postfix-policyd-spf-perl…Postfixをリロードします。
/etc/init.d/postfix reloadSPFチェックの実行:
Jan 4 15:50:11 server postfix/smtpd[19096]: NOQUEUE: reject: RCPT from g230068165.adsl.alicedsl.de[92.230.68.165]: 550 5.7.1 <メールアドレス>: Recipient address rejected: Message rejected due to: SPF fail - not authorized. Please see http://www.openspf.org/Why?s=helo;id=paxxxxxn.com;ip=92.230.68.165;メールアドレス; from=<メールアドレス> to=<メールアドレス> proto=ESMTP helo=
グレイリスト
グレイリスティングは、メールユーザーをスパムから守るための方法です。グレイリスティングを使用するメール転送エージェント(MTA)は、認識できない送信者からのメールを「一時的に拒否」します。メールが正当なものであれば、発信サーバーは遅延の後に再試行し、十分な時間が経過すれば、メールが受け入れられます。
postgreyをインストールする(Debian、Ubuntu):
apt-get install postgrey設定オプションは/etc/default/postgreyにあります(デフォルトの遅延は5分です)。
main.cfを編集し、smtpd_recipient_restrictionsの最後にcheck_policy_service inet:127.0.0.1:10023を追加:
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, reject_unknown_recipient_domain, check_policy_service unix:private/policy-spf,check_policy_service inet:127.0.0.1:10023…Postfixをリロード:
/etc/init.d/postfix reloadグレイリストの実行:
Jan 10 17:38:57 server postfix/smtpd[21302]: NOQUEUE: reject: RCPT from mailout-de.gmx.net[213.165.64.22]: 451 4.7.1 <メールアドレス>: Recipient address rejected: Greylisting in effect, please come back later; from=<メールアドレス> to=<メールアドレス> proto=SMTP helo=DNSBL (DNSベースのブラックリスト/ブロックリスト)
DNSBLは、インターネットドメインネームサービス(DNS)を通じて公開されたIPアドレスのリストであり、DNSサーバーソフトウェアによって使用されるゾーンファイルとして、またはリアルタイムでクエリできるライブDNSゾーンとして使用されます。DNSBLは、スパムに関連するコンピュータやネットワークのアドレスを公開するために最もよく使用されます。ほとんどのメールサーバーソフトウェアは、1つ以上のリストに掲載されたサイトから送信されたメッセージを拒否またはフラグ付けするように構成できます。これには、スパムを送信するために使用されるゾンビコンピュータや他のマシンのアドレスのリスト、スパマーを喜んでホストするISPのアドレスのリスト、またはハニーポットシステムにスパムを送信したアドレスのリストが含まれる場合があります。 Postfixでdnsblを使用するには、reject_rbl_clientを使用します。main.cfファイルにクエリ用のライブDNSゾーンを追加するだけです。
私の例では、非常に良い評判のある2つのリストを使用します(smtpd_client_restrictionsの最後に追加):
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname, check_client_access mysql:/etc/postfix/mysql-virtual_client.cf, reject_rbl_client cbl.abuseat.org, reject_rbl_client b.barracudacentral.orgrblの実行:
Jan 12 01:52:42 server postfix/smtpd[4616]: NOQUEUE: reject: RCPT from 89.pool85-49-26.dynamic.orange.es[85.49.26.89]: 554 5.7.1 Service unavailable; Client host [85.49.26.89] blocked using cbl.abuseat.org; Blocked - see http://cbl.abuseat.org/lookup.cgi?ip=85.49.26.89; from=<メールアドレス> to=<メールアドレス> proto=SMTP helo=
Jan 11 20:13:58 server postfix/smtpd[29591]: NOQUEUE: reject: RCPT from 93-87-122-56.dynamic.isp.telekom.rs[93.87.122.56]: 554 5.7.1 Service unavailable; Client host [93.87.122.56] blocked using b.barracudacentral.org; http://www.barracudanetworks.com/reputation/?pr=1&ip=93.87.122.56; from=
<メールアドレス> to=<メールアドレス> proto=ESMTP helo= Postscreen
注意: この機能はPostfix 2.8以降で利用可能です。
Postfix postscreenデーモンは、メールサーバーの過負荷に対する追加の保護を提供します。1つのpostscreenプロセスが複数の受信SMTP接続を処理し、どのクライアントがPostfix SMTPサーバープロセスと対話できるかを決定します。スパムボットを遠ざけることで、postscreenは正当なクライアントのためにより多くのSMTPサーバープロセスを利用可能にし、サーバーの過負荷状態の発生を遅らせます。
postscreenの主な課題は、単一の測定に基づいて「ゾンビかどうか」を判断することです。これは、多くのゾンビがレーダーの下を飛び、同じサイトを繰り返しスパムしないようにするために必要です。一度postscreenがクライアントがゾンビでないと判断すると、そのクライアントを一時的にホワイトリストに登録し、正当なメールのさらなる遅延を避けます。
このチュートリアルでは、デフォルト設定を使用しますが、例外があります。これらの設定はほとんどの状況に適しています。
まず、次のコマンドでmain.cfに行を追加します:
postscreen_greet_action = enforce次に、master.cfにpostscreenといくつかの新しいサービスを追加します。注意: これらの設定はすでに存在する場合がありますので、コメントを外してください。また、「smtp inet … smtpd」という行がコメントアウトされていることを確認してください(もしあれば、パラメータは新しいsmtpdサービスに移動する必要があります)。
# Postfixマスタープロセス設定ファイル。ファイルの形式の詳細については、master(5)マニュアルページを参照してください(コマンド: "man 5 master")。
#
# このファイルを編集した後は、"postfix reload"を実行するのを忘れないでください。
#
# ==========================================================================
# サービスタイプ プライベート 非特権 chroot ウェイクアップ 最大プロセス コマンド + 引数
# (はい) (はい) (はい) (決して) (100)
# ==========================================================================
#smtp inet n - - - - smtpd
# -o ...
smtpd pass - - n - - smtpd
-o ... # パラメータはsmtpサービスから新しいsmtpdサービスに移動されました。(もしあれば)
smtp inet n - n - 1 postscreen
tlsproxy unix - - n - 0 tlsproxy
dnsblog unix - - n - 0 dnsblog今、Postfixをリロードします:
/etc/init.d/postfix reload新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。