Yannik.relaymail
描述
这个角色设置一个主机,使其通过智能主机发送外发邮件,并可以选择转发发送给本地系统用户的邮件。这是ssmtp的一个安全替代方案。
为什么我不应该使用ssmtp,它不是更容易配置吗?
我实际上认为这个角色让配置postfix比ssmtp更简单。
这是我自己安装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发送邮件的用户都需要读取ssmtp配置文件的权限,该文件包含用于smtp认证的用户名和密码。在正常情况下,您可能会给“其他”用户赋予读取权限,这将意味着该系统上的每个用户/服务都可以读取您的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
(或如果定义了relaymail_from_address
)覆盖发件地址。all
将覆盖所有邮件的发件地址,local
将覆盖从本地用户发送的所有邮件,none
则不会覆盖发件地址- 默认值:
all
- 默认值:
relaymail_from_address
:用于relaymail_force_from_address
的可选发件地址(取代relaymail_smtp_user
)- 示例:
user
或[email protected]
- 示例:
relaymail_overwrite_to
:all
覆盖所有邮件的收件地址,local
仅覆盖发给本地用户的邮件的收件地址,none
则不会覆盖收件地址- 默认值:
all
- 默认值:
relaymail_overwrite_to_target
:覆盖后的收件邮件发送到的地址(当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端口提交邮件时需要此项。- 示例:
"yes"
- 默认值:
"no"
- 示例:
relaymail_authorized_submit_users
:仅允许指定用户通过sendmail命令提交邮件(请参见 http://www.postfix.org/postconf.5.html#authorized_submit_users)- 示例:
root
- 默认值:
static:anyone
- 示例:
relaymail_restrict_port_25
:通过iptables限制发送到postfix用户的端口25的出站流量。- 示例:
false
- 默认值:
true
- 示例:
relaymail_enable_smtpd
:启用25端口的smtpd以进行基于smtp的邮件提交- 示例:
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
:安装rsyslog,负责将postfix日志消息写入/var/log/mail.log
- 示例:
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