Yannik.relaymail
説明
このロールは、ホストを設定して、スマートホストを介して送信メールを送信し、オプションでローカルシステムユーザーに宛てたメールを転送します。ssmtpの安全な代替手段です。
なぜssmtpを使用しないべきか、それは設定が簡単ではないですか?
実際、このロールはssmtpよりもpostfixの設定をさらに簡単にすると考えています。
私がssmtpを自分でインストールしたときにわかったことは次のとおりです:
私は今日、ssmtpを使いたいと思いましたが、現在のDebianおよびUbuntuのリリースでは、リモートサーバーのSSL/TLS証明書を検証せず、証明書のホスト名も検証しないことに気付きました。これは大きな問題で、事実上暗号化が無意味になり、パスワードが平文で送信されてしまうため、誰でも傍受できてしまいます。この件はDebianのバグとして報告されていますが、何年も進展がありません:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=662960
Redhatパッケージのssmtpバージョンには少なくとも証明書を検証するパッチが当てられていますが、ホスト名は依然として検証されず、暗号化はDebian/Ubuntuと同様に不正確です。この件に関するバグもありますが、何年も進展がありません:https://bugzilla.redhat.com/show_bug.cgi?id=864894
したがって、サーバーの送信メールに使用するメールアカウントのセキュリティを気にする場合は、ssmtpを使用しないでください。
ssmtpは少なくとも2009年以降、積極的な開発が行われていません:https://anonscm.debian.org/gitweb/?p=ssmtp/ssmtp.git
これらのポイントに加えて、ssmtpでメールを送信できるユーザーは、SMTP認証に使用するユーザー名とパスワードを含むssmtp構成ファイルへの読み取りアクセスが必要です。通常の条件では、「他の」ユーザーに読み取り権限を与えることが多く、これはそのシステム上のすべてのユーザー/サービスがSMTP資格情報を読むことを意味します。
しかし、これはpostfixのセキュリティ重視の設計ではありません。
要件
このロールはすべてのDebian系ディストリビューションで動作し、postfixを提供する任意のディストリビューションでも簡単にパッチを当てることができます。
このロールにはAnsibleバージョン2.4以上が必要です。
ロール変数
relaymail_smtp_host
: メールを中継するために使用されるSMTPサーバーのホスト名(必須)- 例:
smtp.example.org
- 例:
relaymail_smtp_port
: メールを中継するために使用されるSMTPサーバーのポート- デフォルト:
587
- デフォルト:
relaymail_smtp_user
: 中継メールサーバーで認証に使用するユーザー名(必須)relaymail_smtp_password
: 中継メールサーバーで認証に使用するパスワード(必須)relaymail_force_from_address
:relaymail_smtp_user
でfromアドレスを上書きします(または定義されている場合はrelaymail_from_address
)。all
はすべてのメールのfromアドレスを上書き、local
はローカルユーザーから送信されたすべてのメールのfromアドレスを上書き、none
は決してfromアドレスを上書きしません。- デフォルト:
all
- デフォルト:
relaymail_from_address
:relaymail_force_from_address
がrelaymail_smtp_user
の代わりに使用するオプションのfromアドレス- 例:
user
または[email protected]
- 例:
relaymail_overwrite_to
:all
はすべてのメールのtoアドレスを上書き、local
はローカルユーザー宛てのメールのtoアドレスを上書き、none
はnever toアドレスを上書きしません。- デフォルト:
all
- デフォルト:
relaymail_overwrite_to_target
: 上書きされたtoアドレスのメールが送信されるメールアドレス(relaymail_overwrite_to
がnone
でない場合は必須)relaymail_smtp_tls_security_level
: http://www.postfix.org/postconf.5.html#smtp_tls_security_levelを参照- 例:
dane-only
- デフォルト:
secure
- 例:
relaymail_smtp_tls_wrappermode
: 明示的なSSL/TLSモードで接続します(STARTSSLではなく)。ポート465(SMTPS)でメールを送信する際に必要です。- 例:
"yes"
- デフォルト:
"no"
- 例:
relaymail_authorized_submit_users
: 指定されたユーザーのみがsendmailコマンドを介してメールを送信できます(http://www.postfix.org/postconf.5.html#authorized_submit_usersを参照)- 例:
root
- デフォルト:
static:anyone
- 例:
relaymail_restrict_port_25
: ポート25のアウトバウンドトラフィックをpostfixユーザーに制限します(iptablesを介して)。- 例:
false
- デフォルト:
true
- 例:
relaymail_enable_smtpd
: SMTPベースのメール送信のためにポート25でsmtpdを有効にします。- 例:
true
- デフォルト:
false
- 例:
relaymail_inet_interfaces
: smtpdが有効なときにリッスンするインターフェース- 例:
all
- デフォルト:
loopback-only
- 例:
relaymail_mynetworks
: メールを受け入れ、転送するネットワーク(smtpdが有効なときのみ適用)- 例:
127.0.0.0/8 172.30.0.0/16
- デフォルト:
127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
- 例:
relaymail_authorized_smtp_users
: ローカルSMTPを介してメールを送信することを許可されたユーザー- 例:
['keepalived']
- デフォルト:
[]
- 例:
relaymail_install_rsyslog
: postfixのログメッセージを/var/log/mail.log
に書き込むためのrsyslogをインストールします。- 例:
false
- デフォルト:
true
- 例:
relaymail_additional_options
:main.cf
に追加するキー/バリューの辞書。- デフォルト:
{}
- デフォルト:
relaymail_additional_master_config
:master.cf
に追加される追加設定- デフォルト: ``
注意: relaymail_additional_options
を使用して設定したオプションは、以前の設定を上書きします。postfixのマニュアルによれば、「同じパラメータが複数回定義されている場合、最後のインスタンスだけが記憶されます」ということです。したがって、上書きは有効ですが、postfixは警告メッセージを生成します。
サンプルプレイブック
- hosts: all
roles:
- role: Yannik.relaymail
relaymail_smtp_host: smtp.example.org
relaymail_smtp_user: [email protected]
relaymail_smtp_password: secret
relaymail_overwrite_to: local
relaymail_overwrite_to_target: [email protected]
relaymail_additional_options:
smtp_tls_wrappermode: "yes"
ライセンス
GPLv2
著者情報
Yannik Sembritzki
This role setups up a host so that it sends outgoing mails over a smarthost and optionally forwards email addressed to local system users. A secure alternative to ssmtp.
ansible-galaxy install Yannik.relaymail