Postfix as SMTP Relay对GMail而言是不安全的

时间:2018-11-13 13:25:58

标签: postfix-mta

我目前正在尝试在RHEL上将后缀设置为我们内部票务系统的SMTP中继。

基本配置可以正常运行;邮件得到发送和接收。我们确实更改了一些标头以保护我们的内部网络,但仅此而已。

Trying 10.71.17.107...
Connected to mail-gw.doma.in.
Escape character is '?'.
220 mail-gw.doma.in ESMTP Postfix
STARTTLS
220 2.0.0 Ready to start TLS

Similary,我可以向GMail服务器请求STARTTLS,因此我认为防火墙不是问题:

Trying 108.177.15.26...
Connected to gmail-smtp-in.l.google.com.
Escape character is '?'.
220 **************************************************
EHLO mail-gw.doma.in
250-mx.google.com at your service, [91.198.93.107]
250-STARTTLS
STARTTLS
220 2.0.0 Ready to start TLS

我已经为该mail-gw获得了免费的SSL证书,它似乎是有效的。但是,每当我将邮件中继到GMail时,就会显示该邮件尚未加密。

Not secure according to google

这是我的主人。cf

smtp      inet  n       -       n       -       -       smtpd -v
submission inet n       -       n       -       -       smtpd -v
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no

这是我的main.cf

smtp_sasl_auth_enable = no
smtp_sasl_password_maps = hash:/etc/postfix/relay_passwords
smtp_tls_CAfile = /etc/pki/tls/certs/mail-gw_doma_in.ca-bundle
smtp_tls_cert_file = /etc/pki/tls/certs/mail-gw_doma_in.crt
smtp_tls_key_file = /etc/pki/tls/private/prv.key
smtp_tls_loglevel = 1
smtp_tls_note_starttls_offer = yes
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtpd_cache
smtp_use_tls = yes

smtpd_tls_CAfile = /etc/pki/tls/certs/mail-gw_doma_in.ca-bundle
smtpd_tls_cert_file = /etc/pki/tls/certs/mail-gw_doma_in.crt
smtpd_tls_key_file = /etc/pki/tls/private/prv.key
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom

我全都没主意,特别是因为互联网上的所有解决方案都是smtp_tls_security_level = may。

任何帮助将不胜感激。

e:根据评论,这是我与Google的连接日志。

Nov 15 07:06:44 atdc1-proxy01 postfix/smtp[26878]: < gmail-smtp-in.l.google.com[173.194.76.27]:25: 220 **************************************************
Nov 15 07:06:44 atdc1-proxy01 postfix/smtp[26878]: name_mask: disable_esmtp
Nov 15 07:06:44 atdc1-proxy01 postfix/smtp[26878]: name_mask: delay_dotcrlf
Nov 15 07:06:44 atdc1-proxy01 postfix/smtp[26878]: 14ED21038196: enabling PIX workarounds: disable_esmtp delay_dotcrlf for gmail-smtp-in.l.google.com[173.194.76.27]:25
Nov 15 07:06:44 atdc1-proxy01 postfix/smtp[26878]: > gmail-smtp-in.l.google.com[173.194.76.27]:25: HELO mail-gw.doma.in
Nov 15 07:06:44 atdc1-proxy01 postfix/smtp[26878]: < gmail-smtp-in.l.google.com[173.194.76.27]:25: 250 mx.google.com at your service
Nov 15 07:06:44 atdc1-proxy01 postfix/smtp[26878]: server features: 0x31000 size 0
Nov 15 07:06:44 atdc1-proxy01 postfix/smtp[26878]: smtp_stream_setup: maxtime=300 enable_deadline=0
Nov 15 07:06:44 atdc1-proxy01 postfix/smtp[26878]: > gmail-smtp-in.l.google.com[173.194.76.27]:25: MAIL FROM:<dct_test_it@doma.in>

应该是这样吗?调试传入连接时,我看到服务器使用所有SMTP选项(包括STARTTLS)进行响应吗?由于远程登录到Google主机上还给我带来了STARTTLS的困扰。

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案。 由于某种原因-我不确定如何-我的Postfix认为我们的防火墙正在执行SMTP检查,并启用了PIX解决方法“ disable_esmtp”

因此,我的Postfix仅启动了与HELO的连接,而没有获得STARTTLS的选项。

解决方案: 在您的main.cf中,仅启用其他解决方法。为了简洁起见,我现在这样做是这样的:

function Test() {
  Write-Host "Test"
}
function Invoke-Test() {
  $timer = New-Object System.Timers.Timer
  $timer.AutoReset = $false
  $timer.Interval = 1
  Register-ObjectEvent -InputObject $timer -EventName Elapsed -Action {
    Test
  }
  $timer.Enabled = $true
}

很难相信我对此一无所知。