至此虽然可以通过PostfixAdmin发送邮件,但是仅限于管理员账户,普通用户登录不能发送。而且由于极大的简化了配置,发送的邮件也无法存储。所以要通过客户端,将发送邮件保存到本地,采用用户登录的方式,更方便的发送邮件。

Postfix配置

  1. 修改/etc/postfix/main.cf,配置基于Dovecot的SASL身份验证

    smtpd_sasl_type = dovecot
    smtpd_sasl_path = private/auth
    
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_security_options = noanonymous
    smtpd_sasl_local_domain = $myhostname
    broken_sasl_auth_clients = yes
    
    smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
    smtpd_sender_restrictions = reject_non_fqdn_sender, reject_unknown_sender_domain, permit_sasl_authenticated
  2. 修改/etc/postfix/master.cf,开启接收邮件时,Submission服务的STARTTLS与SMTPS服务的TLS加密

    submission inet n       -       n       -       -       smtpd
      -o smtpd_tls_security_level=encrypt
      -o smtpd_tls_auth_only=yes
      
    smtps     inet  n       -       n       -       -       smtpd
      -o smtpd_tls_wrappermode=yes
      -o smtpd_tls_auth_only=yes
      -o smtpd_tls_wrappermode=yes

Dovecot配置

  1. 新建/etc/dovecot/dovecot-sql.conf.ext,配置接收Posrfix身份验证的数据库验证

    driver = mysql
    connect = host=localhost dbname=postfix数据库名称 user=数据库用户名 password=数据库密码
    default_pass_scheme = SHA512
    password_query = SELECT username as user, password FROM mailbox WHERE username = '%u'
  2. 修改/etc/dovecot/conf.d/10-master.conf,配置与Postfix的身份验证通信

    service auth {
      unix_listener /var/spool/postfix/private/auth {
        mode = 0660
        user = postfix
        group = postfix
      }
    }
  3. 修改/etc/dovecot/conf.d/10-auth.conf,配置身份验证规则

    disable_plaintext_auth = no
    auth_mechanisms = plain login
    !include auth-sql.conf.ext

客户端登录

  1. 配置完成后重启Postfix和Dovecotsystemctl restart postfix && systemctl restart dovecot
  2. 然后开放防火墙端口firewall-cmd --permanent --add-service=smtp-submission && firewall-cmd --permanent --add-service=smtps && firewall-cmd --reload
  3. 使用Thunderbird客户端,登陆后设置关闭自动检查新邮件,邮件备份至本机信件夹
  4. 如果无法验证,可以在VPS上使用swaks --to 收件邮箱 --from 寄件邮箱 --server smtp服务器域名 --auth PLAIN --auth-user 账号 --auth-password 密码进行验证

mail_11

        但是,在开启了cloudflare的DNS解析的CDN后,解析邮件服务器会导致无法解析到真实ip;如果客户端服务器配置成ip,或关闭CDN,因为cloudflare的TLS证书只能用于cloudflare到目标服务器,会导致本机直接到目标服务器无TLS证书可以使用,TLS加密失败。所以需要使用Certbot申请和使用Let's Encrypt的SSL证书,配置postfix使用完整的TLS证书!