如何使用您的Postfix配置消除垃圾邮件

如何使用Postfix配置来防范垃圾邮件

在本指南中,您将学习如何调整Postfix(+ Auth SMTP + Quota)的默认Falko邮件指南, https://www.youcl.com/info/4368 ,以更好地打击垃圾邮件,并允许稍微兼容较老的Qmail系统。


所以让我们开始吧

youcl指南是伟大的所有,但如果你有一个非常繁忙的邮件服务器运行垃圾邮件Assasin每1000秒的消息每分钟是一个CPU杀手。 最好的答案是停止邮件之前,它使用一系列RBL(实时黑名单)和RHBL(相同但不同的),Greylistings和Helo Checks。

首先,我们要更改现有的smtpd限制,并添加一大堆新的检查,以帮助减少系统在/etc/postfix/main.cf中接收的邮件数量

### Checks to remove badly formed email
smtpd_helo_required     = yes
strict_rfc821_envelopes = yes
disable_vrfy_command = yes

unknown_address_reject_code  = 554

unknown_hostname_reject_code = 554

unknown_client_reject_code   = 554



smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, regexp:/etc/postfix/helo.regexp, permit





### When changing sender_checks, this file must be regenerated using postmap <file>, to generate a Berkeley DB



smtpd_recipient_restrictions =

   check_client_access hash:/etc/postfix/helo_client_exceptions

   check_sender_access    hash:/etc/postfix/sender_checks,

   reject_invalid_hostname,
### Can cause issues with Auth SMTP, so be weary!
   reject_non_fqdn_hostname,
##################################
   reject_non_fqdn_sender,

   reject_non_fqdn_recipient,

   reject_unknown_sender_domain,

   reject_unknown_recipient_domain,

   permit_mynetworks,

   reject_unauth_destination,



# Add RBL exceptions here, when changing rbl_client_exceptions, this
file must be regenerated using postmap <file>, to generate a
Berkeley DB

          check_client_access hash:/etc/postfix/rbl_client_exceptions,

          reject_rbl_client cbl.abuseat.org,

          reject_rbl_client sbl-xbl.spamhaus.org,

          reject_rbl_client bl.spamcop.net,

          reject_rhsbl_sender    dsn.rfc-ignorant.org,



         check_policy_service inet:127.0.0.1:60000

         permit 


现在要解释一下,首先我们需要创建几个文件:

我们要创建的第一个文件是/etc/postfix/helo.regexp,它将包含:

/^subdomain\.host\.com$/           550 Don't use my own hostname
/^xxx\.yyy\.zzz\.xxx$/             550 Don't use my own IP address
/^\[xxx\.yyy\.zzz\.xxx\]$/         550 Don't use my own IP address
/^[0-9.]+$/                        550 Your software is not RFC 2821 compliant
/^[0-9]+(\.[0-9]+){3}$/            550 Your software is not RFC 2821 compliant

这样做会使垃圾邮件发送者试图发送helo命令,并假冒通过IP或主机名接收邮件的服务器,以及转移一些不符合RFC 2821合规性的邮件。

接下来,我们需要创建/ etc / postfix / helo_client_exceptions:


#These client IP addresses are allowed to bypass fqdn checks
# Some Comment to identify IP address below
www.xxx.yyy.zzz OK

这个文件是需要的,一个表现不佳的邮件服务器无法发送正确的helo,你需要允许从该源接受邮件。 根据我的经验,像独立设备,CCTV摄像机这样的东西在符合标准方面很差,所以你可能需要做一个例外。

在此文件中的任何更改变得可用之前,您需要运行

postmap /etc/postfix/helo_client_exceptions

这将创建一个名为/etc/postfix/helo_client_exceptions.db的文件


向下移动,我们有/ etc / postfix / sender_checks允许您绕过各种FQDN检查,并允许特定的发件人通过。 如果公司运行内部邮件网络(如domain.com)但电子邮件在int.domain.com上运行,并且没有DNS设置int.domain.com,这是非常有用的,这对于安全性而言不错,因为外部DNS不是很好不知道内部结构,因此Postfix将拒绝int.domain.com。

user@domain.com      REJECT 
user@int.domian.com   OK

再一次修改此文件必须创建一个Berkely DB文件,因此我们使用以下命令创建它:

postmap /etc/postfix/sender_checks

接下来我们进行RBL检查。 有很多专门针对RBL的网站,但是为了减少文章长度,只需将这些列表不断更新,并提供垃圾邮件发送者用于中继邮件的IP和主机名称。 尝试发送邮件到您的邮件服务器的每个IP将被检查这些列表(上面使用4个),如果该IP不在RBL中列出,则邮件服务器将接受该邮件。 当事人服务器发现自己在这些列表上,无时无刻,或列表需要24小时才能在垃圾邮件爆发后删除黑名单IP,因此总是最好再次绕过这些检查。


为此,我们创建一个名为/ etc / postfix / rbl_client_exceptions的文件:

## Some Random comment
www.xxx.yyy.zzz OK

再次,您必须运行postmap生成Berkeley DB文件

postmap /etc/postfix/rbl_client_exceptions
 

smtpd限制的最后一行是灰名单过滤器。 我不会详细介绍这个,作为指导已经存在于youcl https://www.youcl.com/greylisting_postfix_postgrey,但如果你不想使用Greylisting,只需省略一下

check_policy_service inet:127.0.0.1:60000

smtpd限制很容易遵循,直到其中一个检查给出消息传递到Postfix队列的绿色标志,大多数答复不确定移动,除非给出明确的NO消息将向下移动检查列表。

QMAIL LEGACY

DJB(丹·伯恩斯坦)开发了一种名为QMQP的SMTP替代方案。 据说这是更快,更少的间接费用。 因此,如果您使用Postfix替换旧的Qmail MTA,则可能需要启用对QMQP的支持。

我们这样做将以下内容添加到/etc/postfix/main.cf中

qmqpd_authorized_clients = $mynetworks 
qmqpd_error_delay = 5s
qmqpd_timeout = 300s

实际上,您可以对任何事情进行验证,但我决定对mynetworks进行身份验证。 将上述内容添加到main.cf中后,需要进一步修改/etc/postfix/master.cf并确保包含以下内容:

628      inet  n       -       -       -       100       qmqpd  

现在你需要去重新启动Postfix

/etc/init.d/postfix restart

您可以通过键入以下内容检查您的新的QMQP感知Postfix:

telnet localhost 628

通过IP进行身份验证(适用于MS Exchange服务器中的Smarthost中继

接下来,我们要修改指南,使mynetworks的设置比通过flatfiles更容易一些,比如/etc/postfix/main.cf

创建以下/etc/postfix/mysql-mynetworks.cf

user = mail_admin
password = password
dbname = mail
table = allowed_hosts
select_field = 'IP'
where_field = IP
hosts = 127.0.0.1
additional_conditions = and active='yes'

此时您将需要以下SQL

CREATE TABLE`allowed_hosts`(
`active`枚举('yes','no')NOT NULL默认'1'
`IP` varchar(15)NOT NULL default'',
`Client` varchar(128)NOT NULL default'',
`Comments`文本NOT NULL
)ENGINE = MyISAM DEFAULT CHARSET = latin1;

 
最后,通过将我们的mynetworks行的postfix main.cf更改为:
mynetworks = 127.0.0.0/8, proxy:mysql:/etc/postfix/mysql-mynetworks.cf  

最后重新启动Postfix以使更改生效:

chmod o= /etc/postfix/mysql-mynetworks.cf
chgrp postfix /etc/postfix/mysql-mynetworks.cf
/etc/init.d/postfix restart

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏