Postfix Backup MX电子邮件服务器反垃圾邮件配置

时间:2020-01-09 10:43:02  来源:igfitidea点击:

根据RFC2821,编号最小的记录是域中最喜欢的MX。
因此,我有一个目标Postfix备份服务器以将消息保留在队列中,以等待主服务器可用。
这样可以确保如果我的主MX掉线了,我也不会丢失任何电子邮件。
但是,垃圾邮件发送者正在连接到我的备用MX,以避免在主MX服务器上运行的反垃圾邮件过滤器。
这也从我的主要MX隐藏了他们的真实IP。
如何为基于备份RHEL/CentOS 5.3的Postfix mx服务器配置反垃圾邮件?
这是众所周知的问题。
确保在垃圾邮件拒绝方面,备份MX与主服务器运行相同的配置。
请尝试以下方法来改进备用电子邮件服务器的反垃圾邮件配置。

如果备用MX充当存储转发邮件服务器

考虑以下示例:

theitroad.com.	86400	IN	MX 	10 mx01.theitroad.com.
theitroad.com.	86400	IN 	MX 	20 mx02.theitroad.com.

由两个电子邮件服务器处理的theitroad.com电子邮件。

mx02.theitroad.com是您的备份服务器。
打开main.cf并在mx02.theitroad.com上追加以下限制。

只允许您自己的域接受电子邮件

使用relay_domains中继两个域名为theitroad.com和theitroad.com的电子邮件。
另外,设置查找表,使其在与$relay_domains匹配的域中具有所有有效地址,即仅接受电子邮件作为有效电子邮件地址。

# vi /etc/postfix/main.cf

如下修改设置:

relay_domains = theitroad.com, theitroad.com, $mydestination
relay_recipient_maps = hash:/etc/postfix/relay_recipients

创建/etc/postfix/relay_recipients来接受Hyman @ theitroad.com,Hyman @ theitroad.com,user3 @ theitroad.com等的电子邮件。

[email protected]   OK
[email protected]   OK
[email protected]    OK

保存并关闭文件。
最后,更新您的数据库:

# postmap hash:/etc/postfix/relay_recipients

通过RBL反垃圾邮件

现在,添加以下行main.cf以使用RBL检查垃圾邮件发送者的IP地址。
如果没有有效的主机名或者正确的电子邮件地址,则拒绝所有电子邮件:

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname,
  reject_rbl_client zen.spamhaus.org 
# helo required 
smtpd_helo_required = yes
# disable vrfy command 
disable_vrfy_command = yes

smtpd_data_restrictions =
            reject_unauth_pipelining,
            permit

保存并关闭文件。
重新启动/重新加载后缀:

# service postfix reload

还有其他反UCE设置,有关更多信息,请参见Postfix反UCE备忘单。

不列出MX A条目

垃圾邮件发送者电子邮件软件不会重试优先级更高的MX记录。
因此,您要做的就是创建一个不存在的主邮件服务器和一个工作中的辅助邮件服务器,尝试联系主邮件服务器将始终失败。
此技术使用不存在的主邮件服务器,该服务器与所有正确配置的邮件服务器兼容,例如Sendmail,MS-Exchange,Postfix,Qmail,Exim等。
创建BIND dns配置如下:

theitroad.com.	86400	IN	MX 	10 mx01.theitroad.com.
theitroad.com.	86400	IN 	MX 	20 mx02.theitroad.com.
theitroad.com.	86400	IN 	MX 	30 mx03.theitroad.com.
theitroad.com.	86400	IN 	MX 	40 mx04.theitroad.com.

其中:

  • mx02.theitroad.com运行具有反垃圾邮件和反病毒配置的实际主要MX。
  • mx03.theitroad.com您的备份mx服务器具有反垃圾邮件/病毒功能,并充当mx02.theitroad.com的存储和转发服务器。
  • mx01.theitroad.com和mx04.theitroad.com是Nolist MX服务器。它们可以是无效的(或者指向不存在的IP),也可以在端口25上运行SMTP,该端口始终返回4xx错误,以便合法的MTA在编号较低的MX服务器上重试。 nolist MX服务器还可以用来获取有关垃圾邮件发送者的更多信息,以将其列入黑名单。 Google提供的垃圾邮件过滤服务,提供免费的Nolist服务器,专门用于僵尸网络数据收集。

将Backup MX灰色列出

可以将Postfix配置为暂时拒绝来自无法识别的发件人的任何电子邮件。
如果邮件是合法的,则原始服务器将重试并接受电子邮件。
如果邮件来自垃圾邮件发送者,则由于垃圾邮件发送者会通过数千个电子邮件地址并且无法承受重试的时间,因此可能不会重试该邮件。
请参阅如何配置后缀灰名单策略服务器。

Spamassassin + Amavis +为备份MX Server拥护

Spamassassin是一种开源邮件过滤器,可通过对邮件标题和正文使用多种启发式测试来识别垃圾邮件。
您可以在备份服务器上安装Spamassassin垃圾邮件检查功能。
被发现为垃圾邮件(垃圾邮件得分更高)的电子邮件将在到达您的主电子邮件服务器之前被丢弃。
您还可以使用Clamav/Amavis扫描电子邮件并丢弃或者转发受感染的电子邮件。
使用yum或者apt-get命令安装spamassassin,clamd和amavisd-new(在RHEL/CentOS下打开EPEL repo以安装以下软件包):

# yum install clamav-server amavisd-new spamassassin
  • clamav-server:Clam防病毒扫描程序服务器
  • amavisd-new:amavisd-new是Postfix和病毒扫描程序和/或者Mail :: SpamAssassin Perl模块之间的高性能且可靠的接口。
  • spamassassin:电子邮件的垃圾邮件过滤器,可以从邮件传递代理或者在我们的情况下通过amavisd-new调用

完成后,将以下内容添加到您的/etc/postfix/main.cf中:

content_filter=smtp-amavis:[127.0.0.1]:10024

保存并关闭文件。
打开/etc/postfix/master.cf并添加以下设置:

smtp-amavis unix - - n - 2 smtp
  -o smtp_data_done_timeout=2400
  -o smtp_send_xforward_command=yes
  -o disable_dns_lookups=yes
  -o max_use=20
127.0.0.1:10025 inet n - n - - smtpd
  -o content_filter=
  -o local_recipient_maps=
  -o relay_recipient_maps=
  -o smtpd_restriction_classes=
  -o smtpd_delay_reject=no
  -o smtpd_client_restrictions=permit_mynetworks,reject
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks_style=host
  -o mynetworks=127.0.0.0/8
  -o strict_rfc821_envelopes=yes
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o smtpd_client_connection_count_limit=0
  -o smtpd_client_connection_rate_limit=0
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings

保存并关闭文件。
另外,用必要的设置更新/etc/amavisd/amavisd.conf

$daemon_user  = 'amavis';     # (no default;  customary: vscan or amavis), -u
$daemon_group = 'amavis';     # (no default;  customary: vscan or amavis), -g
$mydomain = 'theitroad.com';   # a convenient default for other settings
$log_level = 1;              # verbosity 0..5, -d
$DO_SYSLOG = 1;              # log via syslogd (preferred
$inet_socket_port = 10024;   # listen on this local TCP port(s) (see $protocol)
$sa_tag_level_deflt  = -999;  # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 6.31; # triggers spam evasive actions
$sa_dsn_cutoff_level = 10;   # spam level beyond which a DSN is not sent
$virus_admin               = 'postmaster\@theitroad.com';                    # notifications recip.
$mailfrom_notify_admin     = 'postmaster\@theitroad.com';                    # notifications sender
$mailfrom_notify_recip     = 'postmaster\@theitroad.com';                    # notifications sender
$mailfrom_notify_spamadmin = 'postmaster\@theitroad.com';                    # notifications sender
$mailfrom_to_quarantine = 'postmaster\@theitroad.com'; # null return path; uses original sender if undef
$sa_spam_subject_tag = '***SPAM*** ';
$myhostname = 'mx02.theitroad.com';  # must be a fully-qualified domain name!
$notify_method  = 'smtp:[127.0.0.1]:10025';
$forward_method = 'smtp:[127.0.0.1]:10025';  # set to undef with milter!
# add your server public ip, private ip, 
@inet_acl = qw( 203.1.2.3 127/8  10.10.29.11);

保存并关闭文件。
更新/var/spool/amavisd /中的spamassassin设置:

# usermod -s /bin/bash amavis
# passwd amavis
# su - amavis
$ razor-admin -discover
$ razor-admin -create
$ razor-admin -register -l [email protected] -pass=somePassword
$ cd .spamassassin
$ cp /usr/share/spamassassin/user_prefs.template user_prefs
$ exit
# usermod -s /sbin/nologin amavis

如下更新/etc/clamd.d/amavisd.conf:

# Use system logger.
LogSyslog yes

# Specify the type of syslog messages - please refer to 'man syslog'
# for facility names.
LogFacility LOG_MAIL

# This option allows you to save a process identifier of the listening
# daemon (main thread).
PidFile /var/run/amavisd/clamd.pid

# Remove stale socket after unclean shutdown.
# Default: disabled
FixStaleSocket yes

# Run as a selected user (clamd must be started by root).
User amavis

# Path to a local socket file the daemon will listen on.
LocalSocket /var/spool/amavisd/clamd.sock

更新/etc/mail/spamassassin/local.cf如下:

required_hits 6.31
report_safe 1
rewrite_subject         0
# Enable the Bayes system
use_bayes               1
# Enable Bayes auto-learning
auto_learn              1

保存并关闭文件。
最后,重新启动postfix和其他服务:

# service clamd.amavisd start
# service amavisd start
# service postfix restart

在启动时开启服务:

# chkconfig clamd.amavisd on
# chkconfig amavisd on
# chkconfig postfix on

现在,检查/var/log/maillog中是否有任何错误或者详细信息:

# netstat -tulpn -A inet| egrep ':25|:1002?'
# tail -f /var/log/maillog

上面的配置将在服务器上打开以下端口:

  • 10024 Amavisd
  • 10025 Amavisd将结果传回给Postfix
  • 25个SMTP端口

有关相同优先级MX服务器的说明

您可以指向所有具有相同优先级的邮件服务器。
它具有以下优点:

  • 负载均衡
  • 通过LDAP或者MySQL/PGSQL集中管理用户邮件
  • 集中式病毒扫描
  • 集中式垃圾邮件扫描

dns记录示例:

theitroad.com.	86400	IN	MX 	10 mx01.theitroad.com.
theitroad.com.	86400	IN 	MX 	10 mx02.theitroad.com.
theitroad.com.	86400	IN 	MX 	10 mx03.theitroad.com.
; imap server
imap		86400	IN 	A 	192.54.1.2
; pop3 server - can be CNAME too
pop3		86400	IN 	A 	192.54.1.2

您的局域网中可能需要其他服务器:

  • MySQL/OpenLDAP(10.24.116.2)存储用户名,电子邮件,邮箱和其他信息。
  • 中央防病毒服务器(10.24.116.3)由所有mx服务器用于通过TCP/IP进行扫描。您也可以使用TCP/IP对垃圾邮件扫描进行相同的操作。

每个MX服务器可以使用集中式反垃圾邮件和防病毒服务器。
扫描后,Postfix可以传递最终邮件,可以使用POP3/IMAP服务器进行检索。