robertdebock.postfix

Ansible ロール postfix

システムに postfix をインストールし、設定します。

GitHub GitLab ダウンロード バージョン
github gitlab downloads Version

例のプレイブック

この例は molecule/default/converge.yml から取られ、各プッシュ、プルリクエスト、リリースでテストされています。

---
- name: Converge
  hosts: all
  become: true
  gather_facts: true

  roles:
    - role: robertdebock.postfix
      # postfix_relayhost: "[relay.example.com]"
      postfix_myhostname: "smtp.example.com"
      postfix_mydomain: "example.com"
      postfix_myorigin: "example.com"
      postfix_mynetworks:
        - 127.0.0.0/8
        - 192.168.0.0/16
      postfix_aliases:
        - name: root
          destination: [email protected]
      # Ziggo 設定: ("email-address" と "email-password" はプレースホルダーです)
      postfix_relayhost: "[smtp.ziggo.nl]:587"
      postfix_smtp_sasl_auth_enable: true
      postfix_smtp_sasl_password_map: "/etc/postfix/relay_pass"
      postfix_smtp_sasl_security_options: ""
      postfix_smtp_tls_wrappermode: false
      postfix_smtp_tls_security_level: may
      postfix_smtp_sasl_password_map_content: |
        [smtp.ziggo.nl]:587 email-address:email-password

マシンを準備する必要があります。CIでは molecule/default/prepare.yml を使用してこれを行います:

---
- name: Prepare
  hosts: all
  become: true
  gather_facts: false

  roles:
    - role: robertdebock.bootstrap
    - role: robertdebock.core_dependencies

これらのロールの使い方についての 詳細な説明と例 も参照してください。

ロール変数

変数のデフォルト値は defaults/main.yml に設定されています:

---
# postfix のデフォルトファイル

# これらの設定は postfix に必要です。
postfix_myhostname: "{{ ansible_fqdn }}"
postfix_mydomain: "{{ ansible_domain | default('localdomain', true) }}"
postfix_myorigin: "{{ ansible_domain | default('localdomain', true) }}"

# 公開インターフェースで「リスン」するには、inet_interfaces を "all" または "eth0" のようなインターフェースの名前に設定します。
postfix_inet_interfaces: "loopback-only"

# IPv4 を有効にし、IPv6 をサポートする場合 - IPV4 のみの場合は ipv4 に設定します
postfix_inet_protocols: all

# バナーを設定します。
postfix_banner: "$myhostname ESMTP $mail_name"

# 目的地は Postfix に受け入れるメールを指示します。
postfix_mydestination: $mydomain, $myhostname, localhost.$mydomain, localhost

# 他のマシンからのメールを受け入れるには、mynetworks を "- 192.168.0.0/24" のように設定します。
postfix_mynetworks:
  - 127.0.0.0/8

# これらの設定は, postfix サーバの役割をリレーホストに変更します。
# postfix_relay_domains: "$mydestination"

# メールを他の中央リレーホストに転送したい場合は relayhost を設定します。ブラケットを使用してリレーホストの A レコードに送信します。
# postfix_relayhost: "[relay.example.com]"

# メールを受信するための制限を設定します。
postfix_smtpd_recipient_restrictions:
  - permit_mynetworks
  - permit_sasl_authenticated
  - reject_unauth_destination
  - reject_invalid_hostname
  - reject_non_fqdn_hostname
  - reject_non_fqdn_sender
  - reject_non_fqdn_recipient
  - reject_unknown_sender_domain
  - reject_unknown_recipient_domain
  - reject_rbl_client sbl.spamhaus.org
  - reject_rbl_client cbl.abuseat.org
  - reject_rbl_client dul.dnsbl.sorbs.net
  - permit

postfix_smtpd_sender_restrictions:
  - reject_unknown_sender_domain

# Postfix SMTP クライアントのデフォルト TLS セキュリティレベル
# 有効な値:dane, encrypt, fingerprint, may, none, secure, verify
postfix_smtp_tls_security_level: none

# spamassassin を有効にするには、spamassassin がインストールされていることを確認し、
# (ヒント: role: robertdebock.spamassassin) この二つの変数を設定します:
# postfix_spamassassin: enabled
# postfix_spamassassin_user: spamd

# clamav を有効にするには、clamav がインストールされていることを確認し、
# (ヒント: role: robertdebock.clamav) この変数を設定します:
# postfix_clamav: enabled

# ここでエイリアスを構成できます。通常は `root` をリダイレクトするのが良いプランです。
# postfix_aliases:
#   - name: root
#     destination: [email protected]

# 発信者アクセス制御をここで構成できます。
# postfix_sender_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# 受信者アクセス制御をここで構成できます。
# postfix_recipient_access:
#   - domain: gooddomain.com
#     action: OK
#   - domain: baddomain.com
#     action: REJECT

# ここで SSL/TLS バージョンを無効にできます。
# postfix_tls_protocols: '!SSLv2, !SSLv3, !TLSv1, !TLSv1.1'

# transport_maps Jinja2 テンプレートをここで指定できます。
# postfix_transport_maps_template: /path/to/transport.j2

# header_checks Jinja2 テンプレートをここで指定できます。
# postfix_header_checks_template: /path/to/header_checks.j2

# ローカル biff サービスを使用するかどうか。
# postfix_biff: true

# ローカルで送信されたメールに対し、ドメイン情報がないアドレスには ".$mydomain" を追加します。
# postfix_append_dot_mydomain: false

# ローカル(8) 配信に使用されるエイリアスデータベース
# postfix_alias_maps: "hash:/etc/aliases"

# $virtual_mailbox_maps テーブルのルックアップ結果にすべてのパス名結果に前置きされるプレフィックス。
# postfix_virtual_mailbox_base: /var/mail

# $virtual_mailbox_domains と一致するドメインのすべての有効アドレスを持つオプションのルックアップテーブル。
# postfix_virtual_mailbox_maps: mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf

# Postfix は $virtual_mailbox_domains でリストされたドメインに対して最終的な宛先です。
# postfix_virtual_mailbox_domains: "$virtual_mailbox_maps"

# Postfix は他のローカルまたはリモートドメインにすべてのアドレスがエイリアスされた指定された仮想エイリアスドメインの最終的な宛先です。
# postfix_virtual_alias_domains: "$virtual_alias_maps"

# 特定のメールアドレスまたはドメインを他のローカルまたはリモートアドレスにエイリアスするオプションのルックアップテーブル。
# postix_virtual_alias_maps: "$virtual_maps"

# 受信者のメールボックスに書き込むときに仮想(8) 配信エージェントが使用する受信者ごとのユーザー ID を持つルックアップテーブル。
# postfix_virtual_uid_maps: "static:2000"

# 仮想(8) メールボックス配信のための受信者ごとのグループ ID を持つルックアップテーブル。
# postfix_virtual_gid_maps: "static:2000"

# Postfix SMTP サーバで SASL 認証を有効にします。
# postfix_smtpd_sasl_auth_enable: true

# Postfix SMTP サーバのローカル SASL 認証の領域名。
# postfix_smtpd_sasl_local_domain: $myhostname

# Postfix SMTP サーバ SASL セキュリティオプション;
# Postfix 2.3からの利用可能な機能のリストは、smtpd_sasl_type で選択された SASL サーバの実装によって異なります。
# postfix_smtpd_sasl_security_options: noanonymous

# smtpd(8) の受信メッセージヘッダーに SASL 認証ユーザー名を報告します。
# postfix_smtpd_sasl_authenticated_header: true

# AUTH コマンド (RFC 4954) の古いバージョンを実装するリモート SMTP クライアントとの相互運用性を有効にします。
# postfix_broken_sasl_auth_clients: false

# リモート SMTP クライアント証明書または中間 CA 証明書に署名するために信頼されるルート CA の CA 証明書を含むファイル(PEM 形式)。
# postfix_smtpd_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Postfix SMTP サーバ RSA 証明書のファイルを PEM 形式で指定します。
# postfix_smtpd_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# ターゲットホストにコピーされる Postfix SMTP サーバ RSA 証明書のローカルファイルを PEM 形式で指定します。
# postfix_smtpd_tls_cert_file_source: ./certs/cert.pem

# Postfix SMTP サーバ RSA 秘密鍵のファイルを PEM 形式で指定します。
# postfix_smtpd_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# ターゲットホストにコピーされる Postfix SMTP サーバ RSA 秘密鍵のローカルファイルを PEM 形式で指定します。
# postfix_smtpd_tls_key_file_source: ./certs/privkey.pem

# Postfix SMTP サーバがプロトコルと暗号に関する情報を含む Received: メッセージヘッダーを生成するようにリクエストします。
# postfix_smtpd_tls_received_header: true

# Postfix SMTP クライアントのデフォルト TLS セキュリティレベル;
# 空でない値が指定されると、これは古いパラメータ smtp_use_tls、smtp_enforce_tls、および smtp_tls_enforce_peername を上書きします。
# postfix_smtpd_tls_security_level: may

# リモート SMTP クライアントにクライアント証明書を要求します。
# postfix_smtpd_tls_ask_ccert: true

# TLS アクティビティの追加 Postfix SMTP サーバーロギングを有効にします。
# postfix_smtpd_tls_loglevel: 1

# オプションの Postfix SMTP サーバ TLS セッションキャッシュを含むファイルの名前。
# postfix_smtpd_tls_session_cache_database: btree:/var/lib/postfix/smtpd_tls_session_cache

# リモート SMTP サーバ証明書または中間 CA 証明書に署名するために信頼されるルート CA の CA 証明書を含むファイル。
# postfix_smtp_tls_CAfile: /etc/letsencrypt/live/smtp.syhosting.ch/chain.pem

# Postfix SMTP クライアント RSA 証明書のファイルを PEM 形式で指定します。
# postfix_smtp_tls_cert_file: /etc/letsencrypt/live/smtp.syhosting.ch/cert.pem

# Postfix SMTP クライアント RSA 秘密鍵のファイルを PEM 形式で指定します。
# postfix_smtp_tls_key_file: /etc/letsencrypt/live/smtp.syhosting.ch/privkey.pem

# オプションの Postfix SMTP クライアント TLS セッションキャッシュを含むファイルの名前。
# postfix_smtp_tls_session_cache_database: btree:/var/lib/postfix/smtp_tls_session_cache

# メモリ内の tlsmgr(8) 擬似乱数生成器 (PRNG) プールの外部エントロピーソース。
# postfix_tls_random_source: dev:/dev/urandom

# Postfix SMTP サーバが受け入れる TLS プロトコル。
# postfix_smtpd_tls_mandatory_protocols: TLSv1

# Postfix SMTP クライアントが使用する TLS プロトコル。
# postfix_smtp_tls_mandatory_protocols: TLSv1

# 最終的に $virtual_mailbox_domains にリストされているドメインへの配送のデフォルトのメール配送トランスポートおよび次のホップの宛先。
# postfix_virtual_transport: maildrop1

# ローカル(8) ユーザーのホームディレクトリに対してメールボックスファイルのオプションのパス名。
# postfix_home_mailbox: Maildir/

# メッセージの最大サイズ (バイト単位)、封筒情報を含みます。
# postfix_message_size_limit: 10240000

# リモート SMTP クライアントが MAIL コマンドまたは EHLO 交渉を必要とする他のコマンドを送信する前に、HELO または EHLO コマンドで自己紹介することを要求します。
# postfix_smtpd_helo_required: false

# クライアント接続率や他の率が計算される時間単位。
# postfix_anvil_rate_time_unit: 60s

# このサービスへの接続を試みることができる最大接続試行回数。
# postfix_smtpd_client_connection_rate_limit: 10

# このサービスへの同時接続を許可する最大接続数。
# postfix_smtpd_client_connection_count_limit: 10

# バウンスメッセージは一時的なエラーで配信に失敗したときに配信が不達であると見なされ、キューの時間がバウンスキューの生存期間制限に達したときに考慮されます。
# postfix_bounce_queue_lifetime: 5d

# Postfix README ファイルの場所。これには、特定の Postfix サブシステムまたは機能を構築、設定する方法が記載されています。
# postfix_readme_directory: /usr/share/doc/postfix

# Postfix HTML ファイルの場所。これには、特定の Postfix サブシステムまたは機能を構築、設定する方法が記載されています。
# postfix_html_directory: /usr/share/doc/postfix

# Postfix のリスニングポートを変更できます。
# Postfix は人名サービスを使用してサービス名をポート番号にマッピングします。
# したがって、ポート番号またはサービス名 (smtp のように) を指定します。
postfix_smtp_listen_port: smtp

postfix_smtp_sasl_auth_enable: false
postfix_smtp_sasl_password_map: ""
postfix_smtp_sasl_security_options: ""
postfix_smtp_tls_wrappermode: false
postfix_smtp_sasl_password_map_content: ""

要件

使用するロールの状態

システムを準備するために使用されるロールは以下の通りです。他の方法でシステムを準備することもできます。

要件 GitHub GitLab
robertdebock.bootstrap Build Status GitHub Build Status GitLab
robertdebock.core_dependencies Build Status GitHub Build Status GitLab

コンテキスト

このロールはいくつかの互換性のあるロールの一部です。これらのロールの ドキュメント を確認して、詳細情報を得てください。

関連ロールの概要はこちら: dependencies

互換性

このロールは次の コンテナイメージ でテストされています。

コンテナ タグ
EL 9
Debian すべて
Fedora すべて
Ubuntu すべて

必要な Ansible の最小バージョンは 2.12 です。次のテストが行われました:

  • 前のバージョン。
  • 現在のバージョン。
  • 開発バージョン。

問題を見つけた場合は、GitHub に登録してください。

ライセンス

Apache-2.0

著者情報

robertdebock

私を 後援する ことを考慮してください。

プロジェクトについて

Install and configure postfix on your system.

インストール
ansible-galaxy install robertdebock.postfix
ライセンス
apache-2.0
ダウンロード
145k
所有者
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.