postfix 服务器搭建的邮件服务器总是对外转发垃圾邮件
最近发现公司的邮箱服务器总是不停的对外转发垃圾邮件,用mailq查看队列里的信息如下:3F7F7A1DFED5* 680 Thu Apr9 18:52:42huw@xxxxx.com
bravoflavio52@gmail.com
bravofox016@hotmail.com
bravogirls24@gmail.com
bravohgt@outlook.fr
bravoijesus@hotmail.com
35508A1DFE9C* 685 Thu Apr9 18:52:34huangrujia@xxxx.com
boeckernino@yahoo.de
boecon@aol.com
boeddha4life@hotmail.com
boedean_1@yahoo.com
boeder-1@web.de
而且这些人的邮箱里总是收到N多条退信信息,证明这些邮件确实已经发出去了。 以下是我的main.cf的配置信息,麻烦各位指导一下问题所在,并指导一下该如何解决,万分感谢!!
myhostname = mail.xxxxx.com
mydomain = xxxxx.com
myorigin = $mydomain
mydestination = $mydomain,$myhostname
mynetworks_style = host
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
home_mailbox = Maildir/
mailbox_transport = cyrus
fallback_transport = cyrus
virtual_maps = hash:/etc/postfix/virtual,mysql:/etc/postfix/virtual.mysql
content_filter = amavis:127.0.0.1:10024
message_size_limit=104857600
mailbox_size_limit=0
virtual_mailbox_limit=0
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
check_recipient_access mysql:/etc/postfix/filter.mysql,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_unknown_sender_domain,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
reject_unauth_destination,
permit 行要确认这些发mail的账号是不是你公司的正常账号,如果是则查看一下,是不是客户端有病毒或其它问题。
如果不是,则要看看是被人做了垃圾邮件中转,或入侵,可以在发邮件时要求认证。 回复 2# cryboy2001
老大总算回复了,里面有些账号是我公司邮箱账号,有些又不是,可以确认客户端是没有问题的。 现在无法确认是被中转还是入侵,smtp认证有开启的这个测试过了。 mailq是查找的队列,可以查一下日志,看看是来自内网,还是外网。
看看详细的过程。
下面是用来认证可以发邮件的
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
check_recipient_access mysql:/etc/postfix/filter.mysql,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_unknown_sender_domain,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
reject_unauth_destination,
permit#为什么要加这一个permit,删除试试 回复 4# cryboy2001
嗯,正在测试!
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 mail.xxxxx.com ESMTP Postfix
mail fo
501 Syntax: MAIL FROM: <address>
mail from:<yinwei@xxxxx.com>
250 Ok
rcpt to:<yinwei@xxxxx.com>
250 Ok
data
354 End data with <CR><LF>.<CR><LF>
hahaha
.
250 Ok: queued as 4F89B1CD4001
quit
221 Bye
Connection closed by foreign host.
这样是不是证明 smtp 验证没开启成功呢? 是的,你这等于不用登录就可直接发邮件
# telnet 192.168.0.8 25
Trying 192.168.0.8...
Connected to 192.168.0.8.
Escape character is '^]'.
220 mail.xxxxmail.com.cn ESMTP Postfix
HELO xxxxmail.COM.CN
250 mail.xxxxmail.com.cn
mail from:<chen@xxxxmail.com.cn>
250 2.1.0 Ok
rcpt to:<chen@xxxxmail.com.cn>
553 5.7.1 <chen@xxxxmail.com.cn>: Sender address rejected: not logged in
正常要登录后才能发邮件,上面的测试就是没登录。 本帖最后由 adayyywww 于 2015-04-10 11:29 编辑
回复 6# cryboy2001
那我加上以下的参数不知可行否:
smtpd_sender_login_maps = mysql:/etc/postfix/virtual.mysql
smtpd_reject_unlisted_sender = yes
smtpd_sender_restrictions = reject_sender_login_mismatch,
reject_authenticated_sender_login_mismatch,
reject_unauthenticated_sender_login_mismatch
这里的virtual.mysql 就是 virtual_maps = hash:/etc/postfix/virtual,mysql:/etc/postfix/virtual.mysql
配置是:
# mysql config file for alias lookups on postfix
# the user name and password to log into the mysql server
hosts = 172.18.1.10
user = root
password = xxxxxxxx
# the database name on the servers
dbname =horde
# the table name
table = USER
select_field = FORWARD
where_field = USERNAME
additional_conditions = and STATUS = 1 limit 1
这样配置貌似不行
Transcript of session follows.
Out: 220 mail.fhebsc.com ESMTP Postfix
In:EHLO mailer.fhebsc.com
Out: 250-mail.fhebsc.com
Out: 250-PIPELINING
Out: 250-SIZE 104857600
Out: 250-VRFY
Out: 250-ETRN
Out: 250-AUTH LOGIN PLAIN
Out: 250-AUTH=LOGIN PLAIN
Out: 250 8BITMIME
In:MAIL FROM:<> SIZE=3382 BODY=8BITMIME
Out: 250 Ok
In:RCPT TO:<yinwei@xxxxx.com>
Out: 451 Server configuration error
In:DATA
Out: 554 Error: no valid recipients
In:RSET
Out: 250 Ok
In:QUIT
Out: 221 Bye mail服务器配制比较复杂,要有多个软件的配合,要多看日志细心的测试才会成功。
如果是在用的邮件服务器,先不要动,改成用网络地址来认证能不能发邮件。
再做一台测试,成功后再改。
本帖最后由 woxizishen 于 2015-04-15 14:37 编辑
1.现在暴力破解POP3/smtp邮件账号的软件太多了。如果你没有机制防止暴力破解,账号的密码设置过于简单,被垃圾邮件发送者破解是很正常的,网易和QQ都没办法呵呵,协议的问题没办法。
1.1 首先查看日志,看看最近有没有有异常ip多次尝试sasl登陆,如果要上千次,证明是有人想破解你内部的账号,只要你的邮箱对外,肯定是有人会去尝试破解的。我有设定脚本每天都有邮件发给我整理好的日志,发现最高的时候有人尝试破解7000次。对付这些垃圾邮件发送者不是没办法,是有的,就是当这些垃圾邮件发送者破解超过多少次就断开他连接甚至永久屏蔽。这是很多初级人员使用第三方工具进行暴力破解。我也特意下载过这些暴力破解密码软件(知己知彼,才能根除问题),破解网易和QQ的都是没问题的只是时间的长短。
2.上面说了一堆,下面看重点的了
2.1 首先将收到退信用户(被其他人远程登录过,自己看日志记录)的密码全部更改成10位数以上英文+大小写+数字,一来防止再被利用发垃圾邮件,二来可以防止一般的暴力破解软件再次破解。
2.2 为了从根源彻底杜绝暴力破解,使用Fail2ban防止恶意用户穷举邮件系统账号密码。
2.3有些不是,其实它就是,只是冒充了名称而已,让一般的邮件管理员不清楚,听我的改密码!将所有收到退信的用户密码全部更改成强壮的密码!
(备注:严格要求禁止公司的用户使用公司邮箱去注册论坛等等!你懂得!不想收垃圾邮件,就得从源头做起,垃圾邮件发送者想发垃圾邮件,首先就得收集邮箱地址,虽然可以用探查方法得知邮件服务器邮箱地址,但不是所有垃圾邮件发送者都会的)