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
  • relaymail_overwrite_toall覆盖所有邮件的收件地址,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
许可证
gpl-2.0
下载
499