SMTP

SMTPサーバの種類

SMTPサーバにはさまざまな種類がある

長い間、sendmail が標準的に使われてきたらしい。が、設定の簡易さ、安全性、パフォーマンスなどから qmail, Postfix が利用される事が多くなってきたと。
CentOS では Postfix が採用されている

Postfix の設定

Postfix の主な設定ファイルは2種類

/etc/postfix/main.cf
Postfix の動作を設定するファイル
/etc/postfix/master.cf
Postfix 構成プロセスなどに関する設定を行うファイル。通常は変更する必要はない

main.cf の設定

myhostname

ホスト名を FQDN で指定

#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
myhostname = host.domain.tld
mydomain

メールサーバが属するドメイン名を指定

#mydomain = domain.tld

mydomain = example.com
myorigin

メールアドレスの「@」以下が明示的に指定されなかった場合に補完する値を指定
通常は、myhostname で指定された値か mydomain で指定された値を使用する
この値は、DNSサーバに登録されている名前である必要がある

#myorigin = $myhostname
#myorigin = $mydomain

myorigin = $mydomain
inetinterfaces

SMTP での接続を待ち受けるネットワークインターフェースを指定
all の場合、全ネットワークインターフェースで接続を待ち受ける
localhost の場合、ネットワーク経由でのメール受信は拒否する

#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = localhost

inet_interfaces = all
mydestination

メールの配送を許可する宛先のドメイン名を指定
メールアドレスのドメイン名がここで指定した値いずれかと一致すればメールを受け取る

mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain

mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks

内部ネットワークを指定
ここからのメールは無条件で配送される

#mynetworks = 168.100.189.0/28, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table

mynetworks = 192.168.0.0/24, 127.0.0.0/8
smtpd_banner

バナー情報(サーバ自身のソフトウェア名、バージョン番号情報)の出力を指定
バナー情報に基づいて攻撃ツールを選定される恐れがあるため、バナー情報は制限すると安心感あっぷ

#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)

smtpd_banner = $myhostname ESMTP unknown

デフォルトにはない指定を追加

disable_vrfy_command

SMTP の VRFY コマンドを使うと、メールサーバに存在するアカウントを見つけ出される可能性がある
不正利用されないよう、VRFY コマンドの利用は禁止すると安心感あっぷ

disable_vrfy_command = yes
smtpd_recipient_restrictions

他の SMTP サーバから受信したメールをどう配送するかという、メールのリレー制限を指定

smtpd_recipient_restrictoions = permit_mynetworks, check_relay_domains,
reject_maps_rbl, reject
  • smtpd_recipient_restrictions の設定値
設定値 内容
permit_mynetworks $mynetworks に定義されたホストからは許可
check_relay_domains $mydestination, $inet_interfaces, $virtual_maps, $relay_domains
いずれかに宛先がマッチすれば許可
reject_maps_rbl RBL (Realtime Blackhole List) のブラックリストに登録されているホストからのリレーを拒否
RBLサーバは $maps_rbl_domains で指定する
reject 最後に記述することで、条件にマッチしなかったものを拒否
permit 最後に記述することで、条件にマッチしなかったものを許可
smtpd_sender_restrictions

送信元アドレスに基づいて受信拒否の設定をする

smtpd_recipient_restrictions = reject_non_fqdn_sender,
reject_invalid_hostname,
    reject_unknown_sender_domain, reject_unknown_hostname,
reject_unauth_pipelining
postconf

postconf -n コマンドを実行すると main.cf ファイルを解析し、デフォルトから変更された値を表示する

Postfix の起動

Postfix を起動する方法は2種類

  • 制御スクリプト /etc/init.d/postfix
  • service コマンド
引数 内容
start 起動
stop 停止
restart 再起動
reload 設定の再読み込み
check Postfix メールシステムのチェック
flush 強制的な配送
condrestart 安全な再起動
status 状況表示