跳转至

Postfix Open Relay


2013-11-21 by dongnan

环境

操作系统: Red Hat Enterprise Linux Server release 6.2
软件版本: postfix-2.6.6

PS: 公司原有的邮件服务器,基于系统用户。

问题描述

此邮件服务器转发大量的邮件发送到yahoo,但是被拒绝:

# 大量日志
tail /var/log/maillog

邮件队列,大量邮件等待发送:

mailq | wc -l
8582

测试发送邮件,发现不需要认证就可以转发邮件:

telnet mail.xxx.com 25     # 输入
Trying 211.151.x.x...
Connected to mail.xxx.com.
Escape character is '^]'.
220 xxx.com ESMTP
mail from:test@163.com     # 输入
250 2.1.0 Ok
rcpt to:zhangsan@sina.com  # 输入
250 2.1.5 Ok
data                       # 输入
354 End data with <CR><LF>.<CR><LF>
Subject: test message      # 敲两次回车后输入邮件正文。

test open relay!!!
.                          # 输入
250 2.0.0 Ok: queued as 1D336180577

500 5.5.2 Error: bad syntax
quit                       # 输入
221 2.0.0 Bye
Connection closed by foreign host.

解决方法

编辑配置文件,确保有以下几项:

vim /etc/postfix/main.cf

# 设置可接收邮件的主机名称或域名
mydestination = $mynetworks, $myhostname

# 设置可转发(Relay)的网络邮件
mynetworks = 127.0.0.1/32

# 设置可转发哪些网域的邮件
relay_domains = $mydestination

# 使用SASL来完成SMTP的SMTP-AUTH功能
smtpd_sasl_auth_enable = yes

停止发送垃圾邮,也就是清除件队列:

postsuper -d ALL

注意,以上命令可能将正常的邮件清除。

扩展

Open-Relay(开放转发或匿名转发),是指由于邮件服务器不理会邮件发送者或邮件接受者的是否为系统所设定的用户,而对所有的入站邮件一律进行转发的功能。

通常,若邮件服务器的此功能开放,则我们一般称此邮件服务器是Open-Relay的。

关闭OpenRelay其实是一个能够部分解决问题的方法,这使得Mail服务器在对外发送邮件的时候要求身份认证, 只有Mail服务器上的合法用户才能通过本服务器对外发送邮件,避免了垃圾邮件制造者借助本服务器对外发送垃圾邮件。

在很大程度上降低了垃圾邮件的泛滥程度,但关闭Open Relay是单向的反垃圾邮件技术,只能保证自己不对外发送垃圾邮件,不能防止自己被垃圾邮件骚扰。

参考

open relay

欢迎关注微信公众号: 运维录

Back to top