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_hostname

Helo制限の実行:

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_pipelining

Smtpd遅延:

smtpd_delay_reject = yes

Postfixをリロードするのを忘れないでください:

/etc/init.d/postfix reload

Postfixのための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 reload

SPFチェックの実行:

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.org

rblの実行:

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
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。