CentOS 7 で内部向け SMTP サーバーを構築する手順です。ここではインターネットへ大きく公開する MTA ではなく、内部ネットワークからの送信、LDAP 連携、SASL 認証、smtps を組み合わせる既存環境向けの構成として整理します。
内部向け SMTP で重要なのは、Postfix を立てることそのものではなく、どのネットワークから中継を許可するのか、誰を認証するのか、どの宛先へ配送するのかを分けて考えることです。
コマンドはコピペしやすい形を優先しています。ただし、長大な既存設定ファイルを部分的に変更する箇所では、既存値との重複を避けるため、バックアップを取ったうえで設定断片を確認して反映します。
この手順は CentOS 7 設定マニュアル の一部として整理しています。
Postfix詳解 MTAの理解とメールサーバの構築・運用
Postfix を中心にメールサーバーの構築と運用を確認したい場合の参考書籍です。Dovecot と組み合わせたメール基盤を理解する補助として使えます。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
必要パッケージ
yum install cyrus-saslmain.cf の設定
main.cf は既存値との重複が起きやすいため、丸ごと追記せず、下記の設定断片を確認して反映します。
cp -a /etc/postfix/main.cf /etc/postfix/main.cf.bak
cat <<'EOF'
# /etc/postfix/main.cf の該当項目を以下のように整理する
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8, 10.0.0.0/8
alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf
alias_database = hash:/etc/aliases
EOFLDAP alias 連携
LDAP を alias の参照先にする場合は、bind DN やパスワードを設定ファイルへ書くため、権限を必ず絞ります。
cat <<'EOF' > /etc/postfix/ldap-aliases.cf
server_host = ldaps://localhost/
search_base = dc=mydomain,dc=com
bind = yes
bind_dn = cn=Reader,dc=mydomain,dc=com
bind_pw = [password]
query_filter = uid=%s
result_attribute = mailRoutingAddress
version = 3
EOF
chmod 600 /etc/postfix/ldap-aliases.cfsaslauthd の LDAP 設定
SASL 認証を LDAP に向ける場合は、saslauthd の認証方式と LDAP 接続情報を設定します。
cp -a /etc/sysconfig/saslauthd /etc/sysconfig/saslauthd.bak
cat <<'EOF'
# /etc/sysconfig/saslauthd の MECH を以下に変更する
MECH=ldap
EOF
cat <<'EOF' > /etc/saslauthd.conf
ldap_servers: ldaps://localhost/
ldap_bind_dn: cn=Reader,dc=mydomain,dc=com
ldap_password: [password]
ldap_search_base: dc=mydomain,dc=com
EOF
chmod 600 /etc/saslauthd.confsmtps の有効化
master.cf で smtps を有効化し、TLS wrapper mode と SASL 認証を指定します。master.cf も既存行の有効化が前提なので、設定断片として確認します。
cp -a /etc/postfix/master.cf /etc/postfix/master.cf.bak
cat <<'EOF'
# /etc/postfix/master.cf の smtps 行を以下のように有効化する
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
EOFサービス起動
systemctl start saslauthd
systemctl enable saslauthd
systemctl status saslauthd
systemctl restart postfix
systemctl status postfix確認するポイント
mynetworksが広すぎないか。- LDAP bind 用の認証情報ファイルが 600 になっているか。
- smtps を内部向けに使う理由が明確か。
- 外部から中継可能な open relay になっていないか。
- 配送ログで alias 解決と認証結果を確認できるか。
内部向け SMTP は、便利さのために許可範囲を広げがちです。しかし、SMTP の中継許可は事故の影響が大きいため、認証、送信元ネットワーク、配送先の制御を分けて確認する必要があります。
この手順は CentOS 7 設定マニュアル の一部として整理しています。



