ここでは、Postfixによるメールサーバーの構築方法についてまとめます。

環境はAlma Linux 9.6です。基本的にはRHEL系OSでほぼ同じ手順でできると思います。

まずはPostfixのインストールを行います。

Bash
dnf install -y postfix

main.cfの設定

ここからはPostfixの設定を行います。設置を行うには/etc/postfix/main.cfを編集します。

それぞの設定項目は以下のようなものがあります。

項目設定例備考
inet_interfacesallメールを受け付けるIPアドレス
myhostnamemail.example.comメールサーバのホスト名
mydomainexample.comメールサーバのドメイン名
mydestination$myhostname, localhost.$mydomain, localhost, $mydomain他のマシンに転送せず、ローカルに配送するドメインを指定。受信アドレスの指定
mynetworks192.168.0.0/24利用するPCのネットワーク。このネットワークからはどの配送先へもメールを転送する。
複数指定する場合はスペースを空ける。
home_mailboxMaildir/メールの保存形式
relay_domains$mydestinationネットワーク外からのメールを認められたリモートの配送先のみに転送する。
transport_mapshash:/etc/postfix/transportメールの配送先マッピングの指定。

Bash
# メールサーバーのホスト名
myhostname = mail.example.com

# メールサーバーのドメイン名
mydomain = example.com

# メールを受け付けるネットワークインターフェースのアドレスを設定
inet_interfaces = all

# IPv4のみを使用する
inet_protocols = ipv4

# ローカルマシンに配送するドメインを指定する。
# dovecotが別サーバーのため、localhostと$myhostnameのみを指定する。
mydestination = $myhostname, localhost.$mydomain, localhost

# localhostおよび172.16.0.0/24ネットワークからのメールを配信する。
mynetworks = 127.0.0.0/8 172.16.0.0/24

# メールボックスはMaildir/を指定する。
home_mailbox = Maildir/

# 送信元メールアドレスのサブドメイン部分を削除するオプション
masquerade_domains = example.com

# メールを外部にリレーしない
relayhost=
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination

transport_maps = hash:/etc/postfix/transport

この場合、POP/IMAPサーバーを別建てする想定のため、mydestinationの項目にはlocalhostと$myhostnameのみを指定するようにしています。

トランスポートの設定

Dovecotが別のサーバーにあるので、example.com宛のメールをDovecotサーバーに送るように設定します。PostfixとDovecotが同じサーバーにある場合は設定は不要です。

/etc/postfix/transportを編集し、example.comドメインのメール配送先にDovecotサーバーを指定します。
最後の行に以下のように記載します。

Bash
domain.internal lmtp:[<dovecot server IP Address>]:24

dovecotの待ち受けポートはデフォルトで24番となっていますが、変更する場合はトランスポートの設定の方も合わせてください。

設定したら、以下のコマンドを実行してトランスポートマッピングをハッシュ化します。

Bash
postmap /etc/postfix/transport

最後に、Postfixの構文が正しいかどうかを確認します。

Bash
postfix check

サービスの起動

サービスを起動します。ファイアウォールが有効になっている場合は先に以下を実行します。

Bash
firewall-cmd --add-port=25/tcp --permanent
firewall-cmd --add-service=smtp
firewall-cmd --reload

次に、Postfixのサービスを起動し、自動起動も有効にします。

Bash
systemctl start postfix
systemctl enable postfix

Dovecotの設定手順は別途記載します。