📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
ページの作成:「== 概要 == Postfixは高性能なメールサーバソフトウェア (MTA : Mail Transfer Agent) であり、Dovecotは電子メールの受信と管理を担うソフトウェア (MDA : Mail Delivery Agent) である。<br> <br> Docker / Podmanコンテナとして実行することにより、開発環境や本番環境で簡単にメールサーバを構築することができる。<br> PostfixはSMTPによるメール送信を処理、DovecotはIMAP/POP3に…」 |
|||
| 143行目: | 143行目: | ||
== Postfix設定ファイル == | == Postfix設定ファイル == | ||
==== main.cf ==== | ==== main.cf ==== | ||
main.cfファイルは、サーバのホスト名、受信するドメイン、認証方式、TLS暗号化、セキュリティポリシー、バーチャルメールボックスの設定等のメールサーバの基本的な動作を定義する。<br> | |||
<br> | |||
postfix/main.cfファイルを作成する。<br> | postfix/main.cfファイルを作成する。<br> | ||
<br> | <br> | ||
<syntaxhighlight lang="ini"> | <syntaxhighlight lang="ini"> | ||
# 基本設定 | # 基本設定 | ||
myhostname = mail.example.com | myhostname = mail.example.com # メールサーバのホスト名(FQDN) | ||
mydomain = example.com | mydomain = example.com # 所属するドメイン名 | ||
myorigin = $mydomain | myorigin = $mydomain # 送信メールの送信元ドメイン | ||
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain | mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # 最終配送先として受け取るドメイン | ||
relayhost = | relayhost = # 外部SMTPリレーサーバ(空白の場合は直接配送) | ||
mynetworks = 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 | mynetworks = 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 # 信頼するネットワーク範囲 | ||
inet_interfaces = all | inet_interfaces = all # 待ち受けるネットワークインターフェース (all : 全て) | ||
inet_protocols = ipv4 | inet_protocols = ipv4 # 使用するプロトコル (ipv4 / ipv6 / all) | ||
# メールボックス設定 | # メールボックス設定 | ||
home_mailbox = Maildir/ | home_mailbox = Maildir/ # メールボックス形式 (Maildir形式) | ||
mailbox_command = | mailbox_command = # メール配送時の外部コマンド (空白 : 標準配送) | ||
# | # SASL認証設定 (Dovecot経由) | ||
smtpd_sasl_type = dovecot | smtpd_sasl_type = dovecot # SASL認証のバックエンドタイプ | ||
smtpd_sasl_path = private/auth | smtpd_sasl_path = private/auth # Dovecot認証ソケットのパス | ||
smtpd_sasl_auth_enable = yes | smtpd_sasl_auth_enable = yes # SMTP認証機能の有効化 | ||
smtpd_sasl_security_options = noanonymous | smtpd_sasl_security_options = noanonymous # 匿名認証の無効化 | ||
smtpd_sasl_local_domain = $mydomain | smtpd_sasl_local_domain = $mydomain # SASL認証で使用するローカルドメイン | ||
broken_sasl_auth_clients = yes | broken_sasl_auth_clients = yes # 古いクライアントとの互換性維持 | ||
# TLS設定 | # TLS設定 | ||
smtpd_use_tls = yes | smtpd_use_tls = yes # TLS暗号化機能の有効化 | ||
smtpd_tls_cert_file = /etc/ssl/certs/mail/mail.crt | smtpd_tls_cert_file = /etc/ssl/certs/mail/mail.crt # サーバ証明書ファイルのパス | ||
smtpd_tls_key_file = /etc/ssl/certs/mail/mail.key | smtpd_tls_key_file = /etc/ssl/certs/mail/mail.key # 秘密鍵ファイルのパス | ||
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache | smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache # サーバ側TLSセッションキャッシュ | ||
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache | smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # クライアント側TLSセッションキャッシュ | ||
smtpd_tls_security_level = may | smtpd_tls_security_level = may # TLSセキュリティレベル (may : 任意、encrypt : 必須) | ||
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 | smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 # 使用禁止プロトコル (! : 禁止) | ||
smtpd_tls_ciphers = high | smtpd_tls_ciphers = high # 暗号化方式の強度 (high : 高強度のみ) | ||
smtpd_tls_mandatory_ciphers = high | smtpd_tls_mandatory_ciphers = high # TLS必須時の暗号化方式強度 | ||
# セキュリティ設定 | # セキュリティ設定 | ||
# 受信者アドレスに対する制限ルール(上から順に評価) | |||
smtpd_recipient_restrictions = | smtpd_recipient_restrictions = | ||
permit_mynetworks, | permit_mynetworks, # 信頼ネットワークからの接続を許可 | ||
permit_sasl_authenticated, | permit_sasl_authenticated, # SASL認証済みクライアントを許可 | ||
reject_unauth_destination, | reject_unauth_destination, # 未認証の外部ドメイン宛を拒否 (オープンリレー防止) | ||
reject_invalid_hostname, | reject_invalid_hostname, # 無効なホスト名を拒否 | ||
reject_non_fqdn_sender, | reject_non_fqdn_sender, # 送信者がFQDNでない場合を拒否 | ||
reject_non_fqdn_recipient, | reject_non_fqdn_recipient, # 受信者がFQDNでない場合を拒否 | ||
reject_unknown_sender_domain, | reject_unknown_sender_domain, # 送信者ドメインのDNS解決失敗を拒否 | ||
reject_unknown_recipient_domain | reject_unknown_recipient_domain # 受信者ドメインのDNS解決失敗を拒否 | ||
# バーチャルメールボックス設定 | # バーチャルメールボックス設定 | ||
virtual_mailbox_domains = example.com | virtual_mailbox_domains = example.com # バーチャルドメインとして扱うドメイン | ||
virtual_mailbox_base = /var/mail/vmail | virtual_mailbox_base = /var/mail/vmail # バーチャルメールボックスのベースディレクトリ | ||
virtual_mailbox_maps = hash:/etc/postfix/vmailbox | virtual_mailbox_maps = hash:/etc/postfix/vmailbox # メールアドレスとメールボックスの対応ファイル | ||
virtual_minimum_uid = 1000 | virtual_minimum_uid = 1000 # 使用する最小UID値 | ||
virtual_uid_maps = static:5000 | virtual_uid_maps = static:5000 # バーチャルメールボックスで使用する固定UID | ||
virtual_gid_maps = static:5000 | virtual_gid_maps = static:5000 # バーチャルメールボックスで使用する固定GID | ||
virtual_alias_maps = hash:/etc/postfix/virtual | virtual_alias_maps = hash:/etc/postfix/virtual # メールエイリアス (転送設定) ファイル | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== master.cf ==== | ==== master.cf ==== | ||
master.cfファイルは、Postfixのサービスプロセスを制御する設定ファイルである。<br> | |||
<br> | |||
各サービスの起動方法、プロセス数、実行ユーザ、コマンドラインオプション等を定義する。<br> | |||
また、SMTP、SMTP Submission、LMTPなどの各種サービスの動作を個別に設定することができる。<br> | |||
<br> | |||
特に、SMTP Submission (ポート587) の設定では、認証必須やTLS暗号化必須等のオプションを追加することにより、セキュアなメール送信環境を構築することができる。<br> | |||
<br> | |||
postfix/master.cfファイルに、SMTP Submissionポート (587番) の設定を追加する。<br> | postfix/master.cfファイルに、SMTP Submissionポート (587番) の設定を追加する。<br> | ||
<br> | <br> | ||
# SMTP Submission (ポート587) の設定 | |||
# サービス定義 : submission / inet / smtpdプロセスを起動 | |||
submission inet n - y - - smtpd | submission inet n - y - - smtpd | ||
-o syslog_name=postfix/submission | -o syslog_name=postfix/submission # syslogでの識別名 | ||
-o smtpd_tls_security_level=encrypt | -o smtpd_tls_security_level=encrypt # TLS暗号化を必須化 | ||
-o smtpd_sasl_auth_enable=yes | -o smtpd_sasl_auth_enable=yes # SASL認証を有効化 | ||
-o smtpd_reject_unlisted_recipient=no | -o smtpd_reject_unlisted_recipient=no # 受信者リスト外への配送を許可 | ||
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject | -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject # 認証済みのみ許可 | ||
-o milter_macro_daemon_name=ORIGINATING | -o milter_macro_daemon_name=ORIGINATING # メールフィルタに内部送信を通知 | ||
<br> | <br> | ||
==== バーチャルメールボックスの設定 ==== | ==== バーチャルメールボックスの設定 ==== | ||
vmailboxファイルは、メールアドレスとそれに対応するメールボックスのディレクトリパスを関連付ける。<br> | |||
<br> | |||
各行には、左側にメールアドレス、右側にそのメールボックスの相対パスを記述する。<br> | |||
このファイルを編集した後は、postmapコマンドでハッシュデータベースに変換する必要がある。<br> | |||
<br> | |||
Postfixは、このハッシュデータベースを参照して、受信したメールを適切なメールボックスに配送する。<br> | |||
<br> | |||
postfix/vmailboxファイルを作成して、仮想メールボックスを定義する。<br> | postfix/vmailboxファイルを作成して、仮想メールボックスを定義する。<br> | ||
<br> | <br> | ||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
user1@example.com example.com/user1/ | # 形式 : メールアドレス メールボックスの相対パス | ||
user2@example.com example.com/user2/ | # パスはvirtual_mailbox_base (/var/mail/vmail) からの相対パス | ||
info@example.com example.com/info/ | user1@example.com example.com/user1/ # user1のメールボックス | ||
user2@example.com example.com/user2/ # user2のメールボックス | |||
info@example.com example.com/info/ # infoのメールボックス | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||