Postfixのmain.cfでよく使う設定項目

Postfixのmain.cf

Postfixのmain.cfでよく利用される設定項目を解説

Postfixの運用において最も重要な設定ファイルがmain.cfです。

メールサーバのホスト名、配送対象ドメイン、SMTP認証、TLS暗号化、メールサイズ制限など、多くの設定をmain.cfで管理します。

メールサーバ構築の学習を始めたばかりの方は、設定項目の多さに戸惑うことも少なくありません。

しかし実務で頻繁に利用される設定項目はある程度決まっています。

本記事ではPostfixのmain.cfでよく利用される設定項目を中心に、それぞれの役割や設定例について解説します。

main.cfとは

main.cfはPostfixの基本設定を管理するファイルです。

通常は以下の場所に存在します。

/etc/postfix/main.cf

設定内容は以下のような形式で記述します。

パラメータ = 値

例えばホスト名を設定する場合です。

myhostname = mail.example.com

非常にシンプルな形式で管理されています。

設定内容を確認する方法

現在有効な設定はpostconfコマンドで確認できます。

postconf

特定項目のみ確認する場合です。

postconf myhostname

設定ファイルを直接確認するよりも便利な場合があります。

myhostname

Postfix自身のホスト名を指定します。

myhostname = mail.example.com

SMTP通信時に相手サーバへ通知されるホスト名です。

通常はFQDNを設定します。

代表例です。

mail.example.com
smtp.example.com
mx.example.com

mydomain

メールドメインを指定します。

mydomain = example.com

他の設定項目から参照されることが多いため設定しておくと便利です。

省略可能ですが実務では設定することが一般的です。

myorigin

送信メールのドメイン部分を指定します。

myorigin = $mydomain

例えばLinuxサーバ上のrootユーザーがメール送信した場合です。

root@example.com

のような送信元になります。

inet_interfaces

SMTPサーバが待ち受けるインターフェースを指定します。

全てのNICで待受する場合です。

inet_interfaces = all

ローカルのみの場合です。

inet_interfaces = localhost

監視メール専用サーバではlocalhostが利用されることもあります。

inet_protocols

利用するIPプロトコルを指定します。

IPv4とIPv6を利用する場合です。

inet_protocols = all

IPv4のみ利用する場合です。

inet_protocols = ipv4

検証環境ではipv4のみ設定されることがあります。

mydestination

ローカル配送対象ドメインを指定します。

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

ここで指定したドメイン宛メールはローカル配送されます。

非常に重要な設定項目です。

mynetworks

SMTPリレーを許可するネットワークを指定します。

mynetworks = 127.0.0.0/8, 192.168.60.0/24

指定ネットワークからのメール送信を許可します。

設定ミスはオープンリレーの原因になるため注意が必要です。

relayhost

メール中継先SMTPサーバを指定します。

relayhost = [smtp.example.com]:587

例えば以下のような用途で利用します。

  • Google Workspace経由送信
  • Microsoft 365経由送信
  • メール中継サーバ利用

クラウド環境では利用機会が多い設定です。

home_mailbox

メール保存先を指定します。

Maildir形式の場合です。

home_mailbox = Maildir/

Dovecotとの組み合わせではMaildirが一般的です。

mbox形式の場合は通常利用しません。

alias_maps

メールエイリアスを指定します。

alias_maps = hash:/etc/aliases

ユーザー転送設定などで利用されます。

例えば以下のような設定です。

root: admin

root宛メールをadminへ転送できます。

alias_database

エイリアスデータベースを指定します。

alias_database = hash:/etc/aliases

通常はalias_mapsと同じ設定になります。

message_size_limit

メールサイズ上限を設定します。

message_size_limit = 10485760

上記は10MBです。

添付ファイルサイズ制限として利用されます。

mailbox_size_limit

メールボックス容量制限を設定します。

mailbox_size_limit = 0

0は無制限です。

最近の環境では無制限設定も多く見られます。

smtpd_banner

SMTP接続時のバナーを設定します。

smtpd_banner = $myhostname ESMTP

接続時に以下のように表示されます。
220 mail.example.com ESMTP

セキュリティ上、詳細なバージョン表示は避けることが推奨されます。

smtpd_sasl_auth_enable

SMTP認証を有効化します。

smtpd_sasl_auth_enable = yes

SMTP-AUTH利用時の必須設定です。

smtpd_sasl_type

認証方式を指定します。

Dovecot利用時です。

smtpd_sasl_type = dovecot

現在最も利用される構成です。

smtpd_sasl_path

認証ソケットを指定します。

smtpd_sasl_path = private/auth

Dovecotとの連携で利用します。

smtpd_recipient_restrictions

メール受信制御を行います。

smtpd_recipient_restrictions =
 permit_mynetworks,
 permit_sasl_authenticated,
 reject_unauth_destination

オープンリレー防止の重要設定です。

smtpd_tls_cert_file

TLS証明書を指定します。

smtpd_tls_cert_file =
 /etc/pki/tls/certs/server.crt

TLS利用時の必須設定です。

smtpd_tls_key_file

秘密鍵を指定します。

smtpd_tls_key_file =
 /etc/pki/tls/private/server.key

証明書とセットで利用します。

smtpd_use_tls

TLS機能を有効化します。

smtpd_use_tls = yes

現在のメールサーバではほぼ必須です。

設定反映方法

設定変更後はPostfixへ反映します。

# systemctl reload postfix

または再起動します。
# systemctl restart postfix

通常はreloadで十分です。

設定チェック方法

構文確認を行います。

# postfix check

エラーが表示されなければ設定は正常です。

変更後は必ず実施しましょう。

実務で最低限覚える設定項目

まずは以下を覚えておくと実務で役立ちます。

  • myhostname
  • mydomain
  • mydestination
  • mynetworks
  • relayhost
  • smtpd_sasl_auth_enable
  • smtpd_use_tls

この辺りはメールサーバ構築時に必ず触れる設定です。

まとめ

main.cfはPostfixの基本設定を管理する重要なファイルです。

特にmyhostname、mydestination、mynetworks、relayhostはメール配送に直接影響するため重要です。

また、SMTP認証やTLS暗号化を利用する場合はsmtpd_sasl_auth_enableやsmtpd_use_tlsなども設定します。

まずは主要な設定項目の役割を理解し、メールサーバの動作と結び付けて学習すると理解が深まります。