CentOS6でのメールサーバの設定(postfixその1)

ALL
スポンサーリンク

CentOS6でのメールサーバの設定です。
メール受信サーバ(pop3,imap4,pop3s,imap4s),送信サーバ(smtp,smtps,smtps-auth)として設定します。
サーバとして postfix,dovecotを使用します。
以下を設定します。
-postfix の main.cf の設定
-postfix の master.cf の設定
-dovecot の設定

今回は、postfix の main.cf の設定についてまでを説明します。

postfixインストール

yum install postfix

postfix のmain.cf の設定

デフォルトの/etc/postfix/main.cfの設定に加えて、以下を設定してください。
同じオプション名がデフオルトで存在する場合は、以下の設定の方を記述して下さい。

/etc/postfix/main.cf

inet_interfaces = all
myhostname=ホスト名
mydomain=ドメイン名
myorigin = $mydomain
home_mailbox = Maildir/
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8
message_size_limit = 102400000
mailbox_size_limit = 2048000000
disable_vrfy_command = yes
smtpd_banner = $myhostname ESMTP
#  SMTPS用
smtpd_tls_cert_file = /etc/pki/tls/certs/server.crt
smtpd_tls_key_file = /etc/pki/tls/certs/server.key
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
# SMTP-Auth用
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
##
smtpd_client_restrictions =permit
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

inet_interfaces = all
メールを受信するアドレスを指定します。
allを指定すると、サーバ上に設定されている全てのアドレスでメールを受信します。
ネットワークインタフェースカードを複数サーバに差し、それぞれにIPアドレスを設定している場合などではない限り、all を指定します。

myhostname=ホスト名
ホスト名をFQDNで指定します。
例えば、testserver.test.ne.jp のように指定します。

mydomain=ドメイン
ドメイン名を指定します。
ここで指定したドメイン名は、メールアドレスの @ より右側となります。
例えば、test.ne.jp と設定すると、メールサーバで運用できるメールアドレスは xxxx@test.ne.jp のようになります。

myorigin = $mydomain
ここで設定した値は、ローカルで投函されたメールでドメイン情報が無いメールの @ より右側部分になります。
例えば、myorigin = test.ne.jp としたとします。
ここで、ローカルで宛先に testuser とだけ記述してメールを送ると、ドメイン情報(メールアドレスの @ 以降)が無いので、postfix は myorigin の値を付加して、testuser@test.ne.jp としてメールアドレスを処理します。

home_mailbox = Maildir/
配信されたメールを保存するパス名。ユーザのホームディレクトリからの相対パス名で指定します。
パス名の最後に / を付けるか付けないかで、メール保存形式が異なります。
付けた場合は、Maildir形式といい、1メール1ファイルで保存します。
付けない場合は、Mailbox形式としい、メールは1ファイルにまとめて保存されます。

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
自サーバが受け取るべきメールのドメイン名を指定します。
また myorigin で指定した値が、mydestination の内容に含まれていることが必要です。
ここで設定しないドメイン名のメールは、他のサーバに転送します。

mynetworks = 127.0.0.0/8
自サーバが信頼するネットワークを列挙します。
ここで指定された値は、smtpd_recipient_restrictions オプションで、他のサーバへメールリレー(転送)するか否かの判断に使用します。
mynetworks を不用意に他のネットワークに設定すると、他のサーバからのメールをあなたのサーバが別サーバに転送することになります。
これは不正中継に加担することになりますので、注意が必要です。

message_size_limit = 102400000
送受信可能なメールのサイズをバイト単位で指定します。
メールのサイズには、メール本文以外のメールヘッダやエンベロープ(メールサーバの中継用の情報)も含めます。
この値を下回るメールは送受信できません。

mailbox_size_limit = 2048000000
ユーザのメールボックスの最大容量をバイト単位で指定します。
home_mailbox で Mailbox形式にした場合は、ユーザが保存できる全メールのサイズになります。
メールのサイズには、メール本文以外のメールヘッダも含みます。
Maildir形式の場合は、この値は保存できる1メールのサイズなので、message_size_limit(送受信可能なメールのサイズ)の値より下回らないようにする必要があります。

disable_vrfy_command = yes
SMTP VRFY コマンドを無効にします。
VRFYコマンドによってそのユーザが存在するか確認できる為、外部から有効なメールアドレスがわかってしまいます。
そのため、VRFYコマンドを無効にします。

smtpd_banner = $myhostname ESMTP
メールサーバ接続時に、サーバから返されるテキスト情報です。
必ずテキストの最初には $myhostname を指定しなければいけません。
デフォルトでは $myhostname ESMTP Postfix が返るため、メールシステムが Postfix であることを隠ぺいする為に、 $myhostname ESMTP と設定します。

smtpd_tls_cert_file = /etc/pki/tls/certs/server.crt
smtpd_tls_key_file = /etc/pki/tls/certs/server.key
SMTPSに対応する際に必要です。
SMTPSで接続時に参照するサーバ証明書を指定します。
証明書の作成については、 https でアクセス出来るようにするための apache の設定を参照してください。
yum install mod_ssl , yum install openssl で必要パッケージをインストール後、サーバ用秘密鍵(server.key)の作成 ~ 自己署名したサーバ証明書(server.crt)の作成 の手順に従って作成してください。

smtpd_tls_security_level = may
SMTPSに対応する際に必要です。
Postfix SMTPサーバでのSMTP TLSセキュリティレベルを指定します。
未設定の場合はTLSは使いません。
may を指定すると、STARTTLSサポートをクライアントに通知します。ただし、クライアントがTLS暗号化を使うことは強制しません。
encrypt を指定すると、クライアントが TLS暗号化を使うことを強制します。ただし、メール転送元のサーバが対応していない場合、そのサーバからのメールが届かなくります。従って、ここでは may を指定します。

smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
SMTPSに対応する際に必要です。
TLSセッションキャッシュデータベースを作成する場所を指定します。

smtpd_sasl_type = dovecot
SMTP-Authに対応する際に必要です。
メール送信要求受付時に認証に使うSASLプラグインの種類を指定します。
受信サーバとして Dovecot を使用する場合は、Dovecot の認証を利用できるので、dovecot を指定します。
これにより、受信時に使用するユーザアカウント名/パスワードを、メール送信時の認証に使用できます。
ここで設定する認証は、ユーザがメールクライアントソフトでメール送信する際に要求されます。

smtpd_sasl_path = private/auth
SMTP-Authに対応する際に必要です。
smtpd_sasl_type で dovecot を使用した場合は、 private/auth を設定してください。
正確には、/etc/dovecot/conf.d/10-master.conf で指定した unix_listener の場所になります。
後述する dovecot の設定にて、unix_listener に private/auth を指定しますので、ここでも private/auth を指定します。

smtpd_sasl_auth_enable = yes
SMTP-Authに対応する際に必要です。
SMTPサーバとして SASL 認証を有効にします。

smtpd_sasl_security_options = noanonymous
SMTP-Authに対応する際に必要です。
SASLセキュリティオプションを指定します。
ここでは noanonymous(匿名認証を認めるような方法を許可しない)を設定します。

smtpd_sasl_local_domain = $myhostname
SMTP-Authに対応する際に必要です。
SASL認証で使用するレルム(名前空間)を指定します。とりあえず他サーバと重複が無い $myhostname を指定して下さい。

smtpd_client_restrictions =permit
自サーバ(=SMTPサーバ)がクライアント(ユーザのメールクライアントソフト、他のメールサーバ)からSMTP接続の要求を受けた際に適用するアクセス制限を指定します。
カンマまたは空白で区切って指定します。
指定できるアクセス制限のリストは、 Postfix設定パラメータ の smtpd_client_restrictions の箇所を参照してください。
アクセス制限は先頭から順番にチェックされます。
ここで、アクセス制限のリストが必ず 拒否 になる設定にしてしまうと、あなたのサーバのメールアドレス宛のメールが他サーバからリレーされず、メールが届かなくなってしまいます。
セキュリティ上特定の配信元を拒否する以外は、アクセス制限のリストに 許可 するものが含まれるようにしてください。
また、後述する /etc/postfix/master.cf で、smtpsの場合と、サブミッションポートを指定した送信の場合は、別途 smtpd_client_restrictions を定義しています。

smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
メールリレーの際に適用されるアクセス制限を指定します。
smtpd_client_restrictions がクライアント(ユーザのメールクライアントソフト、他のメールサーバ)からの接続を受け入れるか否かの設定に対し、smtpd_recipient_restrictions は受け入れた接続によるメールをリレー(自サーバへのメール配信や他サーバへのメール送信)するか否かを設定します。
アクセス制限はカンマまたは空白で区切って指定し、チェックは先頭から順番に行われます。
permit_mynetworks は、接続元が $mynetworks にリストアップされたネットワークの場合、要求を許可します。
permit_sasl_authenticated は認証を通過した接続元からの要求を許可します。
reject_unauth_destination では、宛先が mydestination で指定されたものでは無い場合に拒否します。

続きます

参考

Postfix 基本設定
Postfixでスパムメールを拒否する
Postfixによるメールサーバーの構築
メールサーバー構築(Postfix+Dovecot) – CentOSで自宅サーバー構築
Kozupon.com – Postfixのセキュリティパラメータ(2013年04月改訂版)!

コメント