📢 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経由)
  # 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>