Postfixで送信制限を設定する方法

目次
Postfixで送信制限を設定してメールサーバを安全に運用する方法
メールサーバをインターネットへ公開する場合、送信制限の設定は非常に重要です。
適切な制限を設定していないと、スパムメール送信の踏み台として悪用されたり、大量メール送信によってサーバ負荷が上昇したりする危険があります。
特に企業のメールサーバでは、送信制限によって不正利用を防止し、正常なメール配送を維持することが重要です。
Postfixには様々な送信制御機能が用意されており、環境に応じて柔軟な設定が可能です。
本記事ではPostfixで利用できる代表的な送信制限設定について解説します。
なぜ送信制限が必要なのか
メールサーバは外部からSMTP接続を受け付けるため、適切な制御を行わないと悪用される可能性があります。
例えば以下のような問題が発生します。
- スパムメール大量送信
- メールサーバの高負荷
- ブラックリスト登録
- 正規メールの配送失敗
- 不正中継(オープンリレー)
送信制限はこれらを防止するための重要なセキュリティ対策です。
Postfixの送信制御の仕組み
PostfixではSMTP通信中に様々な条件をチェックできます。
SMTP接続
↓
接続元確認
↓
送信者確認
↓
宛先確認
↓
認証確認
↓
メール受信
各段階で許可・拒否の判定が行われます。
オープンリレー対策
最も重要なのがオープンリレー防止です。
現在のPostfixでは以下の設定が基本となります。
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destinationこの設定によって認証済みユーザーまたは許可ネットワークのみメール送信が可能になります。
mynetworksによる制限
許可するネットワークを指定します。
mynetworks = 127.0.0.0/8, 192.168.60.0/24この設定ではローカルホストと192.168.60.0/24のみ送信を許可します。
社内メールサーバではよく利用される設定です。
SMTP認証を必須にする
認証済みユーザーのみ送信可能にします。
smtpd_sasl_auth_enable = yes
さらに以下を設定します。
permit_sasl_authenticated現在のメールサーバでは標準的な運用です。
送信元メールアドレスを制限する
存在しない送信者アドレスを拒否できます。
smtpd_sender_restrictions =
reject_unknown_sender_domain不正な送信者を減らすことができます。
送信元ドメインを制限する
特定ドメインのみ許可することも可能です。
送信者制御ファイルを作成します。
# vi /etc/postfix/sender_access
例です。
example.com OK
bad-domain.com REJECT
DB化します。
# postmap /etc/postfix/sender_access
main.cfへ追加します。
smtpd_sender_restrictions =
check_sender_access hash:/etc/postfix/sender_access接続元IPアドレスを制限する
特定IPを拒否できます。
アクセス制御ファイルを作成します。
# vi /etc/postfix/client_access
例です。
192.168.60.100 OK
203.0.113.100 REJECT
DB化します。
# postmap /etc/postfix/client_access
設定します。
smtpd_client_restrictions =
check_client_access hash:/etc/postfix/client_access宛先アドレスを制限する
配送先を制限することも可能です。
smtpd_recipient_restrictions =
reject_unknown_recipient_domain存在しないドメインへの送信を防止できます。
HELOホスト名を検査する
不正なHELOを拒否できます。
smtpd_helo_required = yes
さらに検査を追加します。
smtpd_helo_restrictions =
reject_invalid_helo_hostnameスパム対策として利用されます。
同時接続数を制限する
大量接続による負荷を防止できます。
smtpd_client_connection_count_limit = 201つのIPから20接続まで許可する例です。
接続レートを制限する
短時間の大量接続を制限します。
smtpd_client_connection_rate_limit = 30スパム送信対策として有効です。
メッセージ数を制限する
1接続あたりの送信メール数を制限できます。
smtpd_client_message_rate_limit = 100大量送信の防止に利用されます。
メールサイズを制限する
送信可能なメールサイズを制限します。
message_size_limit = 1048576010MB制限の例です。
添付ファイル対策として利用されます。
送信先数を制限する
大量の宛先指定を制限します。
smtpd_recipient_limit = 100メーリングリスト以外では有効な制限です。
ブラックリストを利用する
DNSBLによるスパム対策です。
smtpd_recipient_restrictions =
reject_rbl_client zen.spamhaus.org既知のスパム送信元を拒否できます。
導入時は運用ポリシーを確認しましょう。
Fail2banとの連携
認証失敗を繰り返すIPを自動的に遮断できます。
Fail2banと組み合わせることでブルートフォース攻撃を防止できます。
実務ではよく利用される構成です。
設定変更後の確認
設定ファイルを確認します。
# postfix check
問題がなければ反映します。
# systemctl restart postfix
または
# systemctl reload postfix動作確認方法
SMTP接続確認です。
# telnet localhost 25
ログ確認です。
# tail -f /var/log/maillog拒否設定が正しく動作しているか確認します。
よくある設定ミス
送信制限設定では以下のミスが発生しやすくなります。
- 正規ユーザーまで拒否する
- mynetworks設定ミス
- アクセスDB未作成
- 設定反映忘れ
- オープンリレー化
設定後は必ずテストを実施しましょう。
企業環境で推奨される設定
一般的な企業メールサーバでは以下が推奨されます。
- SMTP-AUTH必須
- TLS必須
- オープンリレー禁止
- 接続数制限
- メールサイズ制限
- Fail2ban導入
基本的なセキュリティ対策として有効です。
まとめ
PostfixではSMTP認証、アクセス制御、レート制限など様々な送信制限を設定できます。
特にreject_unauth_destinationによるオープンリレー対策は必須です。
また、接続数制限やメールサイズ制限を組み合わせることで、スパム送信や不正利用を防止できます。
メールサーバを安全に運用するためには、適切な送信制限を設定し、定期的にログを確認することが重要です。






