almalinux環境で、postfixを使用して、smtp(TCP 25)、smtps(TCP 465)、submission(TCP 587)が稼働するメール送信サーバを構築します。
postfixのサーバへのインストール
インストールは簡単です。次のコマンドを実行してください。ここではsmtp認証で使用するcyrus-saslも合わせてインストールを行います。
# dnf install postfix cyrus-sasl cyrus-sasl-plain
postfixの設定
まず、一番基本となる /etc/postfix/main.cf ファイルを編集します。以下、変更点のみ記載します。
myhostname = mail.dassyi.com
mydomain = dassyi.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = XXX.XX.XX.xX, 127.0.0.0/8
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP unknown
smtpd_tls_cert_file = /etc/pki/tls/certs/dassyi.com.crt
smtpd_tls_key_file = /etc/pki/tls/private/dassyi.com.key
smtp_tls_loglevel = 1
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
message_size_limit = 10240000
# SMTPS setting
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
tls_high_cipherlist = kEECDH:+kEECDH+SHA:kEDH:+kEDH+SHA:+kEDH+CAMELLIA:kECDH:+kECDH+SHA:kRSA:+kRSA+SHA:+kRSA+CAMELLIA:!aNULL:!eNULL:!SSLv2:!RC4:!MD5:!DES:!EXP:!SEED:!IDEA:!3DES
smtp_tls_ciphers = high
smtpd_tls_ciphers = high
smtpd_tls_mandatory_ciphers = high
smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3
smtp_tls_mandatory_protocols=!SSLv2,!SSLv3
smtpd_tls_protocols=!SSLv2,!SSLv3
smtp_tls_protocols=!SSLv2,!SSLv3
# security setting
disable_vrfy_command = yes
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
reject_unknown_hostname,
reject_non_fqdn_hostname,
reject_invalid_hostname,
permit
smtpd_sender_restrictions =
permit_mynetworks,
reject_unknown_sender_domain,
reject_non_fqdn_sender
smtpd_client_restrictions =
permit_mynetworks,
reject_unknown_client,
permit
### DKIM Settings
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
DKIMの設定については、こちらをご確認ください。
次に、/etc/postfix/master.cf ファイルを編集します。
#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master" or
# on-line: http://www.postfix.org/master.5.html).
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
#smtp inet n - n - 1 postscreen
#smtpd pass - - n - - smtpd
#dnsblog unix - - n - 0 dnsblog
#tlsproxy unix - - n - 0 tlsproxy
submission inet n - n - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes ←submissionポートでsasl authを使用
# -o smtpd_tls_auth_only=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - n - - smtpd
# -o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes ←starttlsでなく、smtpsで接続する?outlook用?
-o smtpd_sasl_auth_enable=yes ←smtpsでsasl authを使用
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
ユーザ追加時にMaildirを自動で作成する設定
ここでは、Maildir形式を利用する場合において、ユーザを追加した際に、デフォルトでMaildirを作成する設定を実施します。まず/etc/skelに必要なディレクトリを作成しておき、パーミッションを700にします。
# mkdir -p /etc/skel/Maildir/{new,cur,tmp}
# chmod -R 700 /etc/skel/Maildir/
これで新規でユーザを作成した際に、ホームディレクトリにMaildirができているか確認しましょう。
なお、上記設定を実施する前に作成したユーザは、Maildirディレクトリはありませんので、手動で作成するようにしましょう。
SMTP認証(sasl-authd)の設定
/etc/sasl2/smtpd.conf にてpwcheck_methodを選択する。
- saslauthd : PAMやshadowを使用
- auxprop : SASL独自のパスワードDBを使用
今回はシステムの認証情報を使用する為、デフォルトのsaslauthdを選択。
# systemctl enable saslauthd
# systemctl start saslauthd
# systemctl enable postfix
# systemctl start postfix
サーバ証明書の中間証明書の取り扱いについて
サーバ証明書を設定する際に、中間証明書の設置が必要なケースもあると思います。
ここでは、JPRSの中間証明書(JPRS_OVCA_G4_PEM.cer)を、postfixデフォルトのtls-ca-bundle.pem(シンボリックリンクの元ファイル)に組み込む方法を紹介します。
# cd /etc/pki/ca-trust/source/anchors/
# cp ~/JPRS_OVCA_G4_PEM.cer ./
として、JPRSの中間証明書を配置します。その後に以下のコマンドを実行して組み込みます。
# cd /etc/pki/ca-trust/extracted/pem/
# update-ca-trust extract
tls-ca-bundle.pemの最後に、JPRSの中間証明書の内容が追記されていれば成功です。
今回はここまでです。このあと、受信サーバ(dovecot)の設定に続きます。