postfixでメール送信サーバを構築する手順

almalinux環境で、postfixを使用して、smtp(TCP 25)、smtps(TCP 465)、submission(TCP 587)が稼働するメール送信サーバを構築します。

postfixのサーバへのインストール

インストールは簡単です。次のコマンドを実行してください。ここではsmtp認証で使用するcyrus-saslも合わせてインストールを行います。

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にします。

これで新規でユーザを作成した際に、ホームディレクトリにMaildirができているか確認しましょう。

なお、上記設定を実施する前に作成したユーザは、Maildirディレクトリはありませんので、手動で作成するようにしましょう。

SMTP認証(sasl-authd)の設定

/etc/sasl2/smtpd.conf にてpwcheck_methodを選択する。

  • saslauthd : PAMやshadowを使用
  • auxprop : SASL独自のパスワードDBを使用

今回はシステムの認証情報を使用する為、デフォルトのsaslauthdを選択。

サーバ証明書の中間証明書の取り扱いについて

サーバ証明書を設定する際に、中間証明書の設置が必要なケースもあると思います。

ここでは、JPRSの中間証明書(JPRS_OVCA_G4_PEM.cer)を、postfixデフォルトのtls-ca-bundle.pem(シンボリックリンクの元ファイル)に組み込む方法を紹介します。

として、JPRSの中間証明書を配置します。その後に以下のコマンドを実行して組み込みます。

tls-ca-bundle.pemの最後に、JPRSの中間証明書の内容が追記されていれば成功です。

今回はここまでです。このあと、受信サーバ(dovecot)の設定に続きます。