Postfixの設定

03/06/12
Postfixの設定が詳しくかかれているサイトを見つけました。
Linuxで自宅サーバ様 です。

このサイトによると、「メール不正中継の拒否」なのですが、以下のような記述が。

ここからLinuxで自宅サーバ様のページより抜粋

ここからは、Webmin は使用しません。
Webmin を使用しても設定可能な様ですが、どこに何を書けば分からないので、直接設定ファイルを編集します。

Postfix の設定ファイルは、Vine Linux 2.6 のデフォルトでは
/etc/postfix ディレクトリ内にある main.cf です。

Postfix では、メールの送受信や中継の設定を細かに指定する事ができます。

参考までに、以下にアクセス制御用の設定項目を示します。

アクセス制御用の設定項目

設定項目 説明


disable_vrfy_command Yes / No で指定。
  Yes を指定すると、SMTP の VRFY コマンドが使用不可になる。

strict_rfc821_envelopes Yes / No で指定。
  Yes を指定すると、RFC822 で定義されている書式に適合しないメールアドレスが通知された場合、受信を拒否する。

smtpd_helo_required Yes / No で指定。
  Yes を指定すると、HELO コマンドでホスト名を通知しないホストの接続を拒否する。

smtpd_client_restrictions Postfix
  サーバへの接続の許可/拒否を指定する事が可能。


smtpd_helo_restrictions
  HELO コマンドで通知された FQDN に応じて接続の許可/拒否する事が可能。


smtpd_recipient_restrictions
  SMTP の RCPT TO コマンドで通知される宛先メールアドレスに応じてメール受信の許可/拒否する事が可能。


smtpd_sender_restrictions

  SMTP の MAIL FROM コマンドで通知される送信元メールアドレスに応じてメール受信の許可/拒否する事が可能。


smtpd_etrn_restrictions
  SMTP の ETRN コマンドの使用を制御する。

次に、各アクセス制御用の設定項目に記述できる設定値を以下に示します。もちろん参考までに。

 

各アクセス制御用の設定項目に記述できる設定値

設定値 説明

check_relay_domains
  $mydestination , $inet_interfaces , $virtual_maps , $relay_domains 、各パラメータ値にリストされたアドレス宛かチェックする。


permit_mynetworks
  自サイトのネットワークからの接続を無条件で許可する


permit
  常に接続を許可する。設定項目の最後に記述する事で「それ以外は中継を許可する」という意味になる


reject_invalid_hostname
  ホスト名が不正(怪しい)なホストの接続を拒否


reject_sender_login_mismatch
  SMTP の認証時に使われたユーザ名とSMTPの「MAIL TO」コマンドで通知される送信元メールアドレスのユーザ名が違えば拒否する。


reject_unknown_client
  IP アドレスからホスト名への逆引きができないホストの接続を拒否する。


eject_unknown_sender_domain

  送信元のメールアドレスのホスト名( @ より右 )が DNS に登録されていなければ接続を拒否する。


これらを踏まえて Postfix の設定ファイルを編集して行きます。
先述の main.cf を vi やテキストエディタなどで開きます。

まずは、変更すべき箇所を編集していきます。

# Postfix から送信される全ての発信元アドレスは、発信元はこのネットワークのユーザからなので $mydomain を指定する。
# $mydomain は後で記述します。

myorigin = $mydomain

# 次の項目の mynetworks でサブネットを指定するので、subnet を指定する。
mynetworks_style = subnet

# Postfix を中継できるクライアントを制限する。
# ネットワークアドレス/サブネットと、IPアドレスが定義できる。複数設定の場合は、","(カンマ)で区切る。

mynetworks = 192.168.0.0/24, 127.0.0.0/8

 

次に新規で追加して行く項目を記述します。
記述場所はでこでも構いませんが、Webmin が最下部に追加する様なので、最下部に追加します。
main.cf の最下部には、Webmin でちょこっと設定した為に以下の記述があると思います。

mydomain = example.com
mydestination = $myhostname, $mydomain
myhostname = example.com


この下に先ほどの設定項目 & 設定値を記述して行きます。

# HELO コマンドでホスト名を通知しないホストの接続を拒否
smtpd_helo_required = yes

# SMTP の VRFY コマンドを使用不可にする
disable_vrfy_command = yes

# RFC822 で定義されている書式に適合しないメールアドレスが通知された場合、受信を拒否する
strict_rfc821_envelopes = yes

# この2つに「 no 」を指定すると何でもかんでも転送拒否してしまいます。
allow_percent_hack = yes
swap_bangpath = yes

# ソース・ルート形式で指定されている宛先メールアドレスを拒否しています。
allow_untrusted_routing = no

# Postfix サーバへの接続は、自サイトのネットワークからの接続を無条件で許可し、IP アドレスからホスト名への逆引きができないホストの接続を拒否。
smtpd_client_restrictions = permit_mynetworks, reject_unknown_client, permit

# ホスト名が正しい書式でホスト名を通知してきたホストのみ接続を許可
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, reject_unknown_client, permit

# ホスト名と転送先ドメインとして許可されているドメインが宛先メールアドレスに指定されているものを受信
smtpd_recipient_restrictions = permit_mynetworks, reject_sender_login_mismatch, check_relay_domains

# 実際には存在しないドメイン名が送信元メールアドレスに使われているメールの受信を拒否
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch

# SMTP の ETRN コマンドの使用をホスト名が不正(妖しげ)なホストには使用不可としている
smtpd_etrn_restrictions = permit_mynetworks, reject_invalid_hostname

これらの設定が出来たら保存し、Postfix の再起動をかけ、設定を反映させます。
Postfix の再起動は Webmin 上からでも構いません。

注 意
これで、Postfix はメールの送受信が可能になりました。
それに伴い、ルータの設定が必要です。メール送受信関連では、SMTP が「 25 番ポート 」、POP が「 110 番ポート 」を使用しますので、ルータの設定を変更します。

<<Pre Next>>