当你的 MTA 由于设定不良的关系导致具有 Open Relay 的状况,加上你的 MTA 确实是连上因特网时, 由于因特网上面用 port scan 软件的闲人太多,你的 MTA 具有 Open Relay 的功能这件事情, 将会在短时间内就被很多人察觉,此时那些不法的广告信、色情垃圾信业者将会利用你的这部 Open Relay MTA 发送他们的广告,所以应该关闭open relay功能,授权开放relay功能:
myhostname:设定主机名,需使用 FQDN 喔
这个项目在于设定你的主机名,且这个设定值会被后续很多其他的参数所引用,所以必须要设定正确才行。 你应该要设定成为完整的主机名。在这个练习当中,应该设定为: myhostname = www.centos.jet 才对。 除了这个设定值之外,还有一个 mydomain 的设定项目,这个项目默认会取 $myhostname 第一个『.』之后的名称。 举例来说上头设定完毕后,预设的 mydomain 就是 centos.jet !你也可以自行设定他。
myorigin :发信时所显示的『发信源主机』项目
这个项目在设定『邮件头上面的 mail from 的那个地址』, 也就是代表本 MTA 传出去的信件将以此设定值为准!如果你在本机寄信时忘记加上 Mail from 字样的话, 那么就以此值为准了。默认这个项目以 $myhostname 为主的,例如: myorigin = $myhostname
inet_interfaces :设定 postfix 的监听接口 (极重要)
在预设的情况下你的 Postfix 只会监听本机接口的 lo (127.0.0.1) 而已,如果你想要监听整个 Internet 的话, 请开放成为对外的接口,或者是开放给全部的接口,常见的设定方法为: inet_interfaces = all 才对! 由于如果有重复设定项目时,会以最晚出现的设定值为准,所以最好只保留一组 inet_interfaces 的设定!
inet_protocols :设定 postfix 的监听 IP 协议
预设 CentOS 的 postfix 会去同时监听 IPv4, IPv6 两个版本的 IP,如果你的网络环境里面仅有 IPv4 时,那可以直接指定 inet_protocols = ipv4 就会避免看到 :::1 之类的 IP 出现呦!
mydestination :设定『能够收信的主机名』 (极重要)
mynetworks_style :设定『信任网段』的一项指标
这个设定值在规定『与主机在同一个网段的可信任客户端』的意思!保持默认,因为咱们可以从mynetworks设置。
mynetworks :规定信任的客户端 (极重要)
你的 MTA 能不能帮忙进行 Relay 与这个设定值最有关系!举例来说,我要开放本机与内部网域的 IP 时,就可以这样进行设定: mynetworks = 127.0.0.0/8, 192.168.100.0/24。如果你想要以 /etc/postfix/access 这个档案来控制 relay 的用户时,建议你将上述的数据改写成这样: mynetworks = 127.0.0.0/8, 192.168.100.0/24, hash:/etc/postfix/access 然后你只要再建立 access 之后重整成数据库后,嘿嘿!就能够设定 Relay 的用户!
relay_domains :规范可以帮忙 relay 的下一部 MTA 主机地址
alias_maps :设定邮件别名
就是设定邮件别名的设定项目,只要指定到正确的档案去即可,这个设定值可以保留默认值。
#配置前请确保iptables规则配置妥当,selinux已经关闭,如果是centos7,firewall也要关闭。
iptables -A INPUT -p TCP -i $EXTIF --dport 25 --sport 1024:65534 -j ACCEPT
[root@www ~]# vim /etc/postfix/main.cf
myhostname = www.centos.jet
myorigin = $myhostname
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname,$mydomain
mynetworks = 127.0.0.0/8, 192.168.100.0/24, hash:/etc/postfix/access
relay_domains = $mydestination
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# 其他的设定值就先保留默认值即可!
# 生成别名数据库文件
[root@www ~]# postmap hash:/etc/postfix/access
[root@www ~]# postalias hash:/etc/aliases
# 检查配置文件的语法是否有错误
[root@www ~]# /etc/init.d/postfix check <==没有信息输出,表示没有问题。
# 启动与观察 port number
[root@www ~]# /etc/init.d/postfix restart
假设要增加MTA的过滤机制
[root@www ~]# vim /etc/postfix/access
10.1.30.50 OK
.edu.com OK
av.com REJECT
192.168.2. REJECT
# OK 表示可接受,而 REJECT 则表示拒绝。
[root@www ~]# postmap hash:/etc/postfix/access
[root@www ~]# ls -l /etc/postfix/access*
#不必重新启动 postfix,只要重新生成数据库文件即可生效。
关于别名的配置(root权限配置)
#作用是将发给这些系统账号的邮件发一份给root。
[root@www ~]# vim /etc/aliases
mailer-daemon: postmaster
postmaster: root
bin: root
daemon: root
#左边是系统账号,也是别名设置位置,右边是root账号,也是实际接收邮件的账号。
#假如你的 MTA 内有一个实际的账号名称为 dmtsai ,这个使用者还想要使用 dermintsai 这个名称来收他的信件, 那么你可以这样做:
[root@www ~]# vim /etc/aliases
dermintsai: dmtsai
# 左边是你额外所设定的,右边则是实际接收这封信的账号!
[root@www ~]# postalias hash:/etc/aliases
# 信件会传给 root 与 dmtsai 这两个账号!
[root@www ~]# vim /etc/aliases
root: root,dmtsai
[root@www ~]# postalias hash:/etc/aliases
#创建邮件组
[root@www ~]# vim /etc/aliases
student2011: std001,std002,std003,std004...
[root@www ~]# postalias hash:/etc/aliases
#邮件别名除了填写自己主机上面的实体用户之外,其实你可以填写外部主机的 email !
# 例如你要将本机的 dermintsai 那个不存在的用户的信件除了传给 dmtsai 之外,还要外传到 dmtsai@mail.niki.centos.jet 时,可以这样做:
[root@www ~]# vim /etc/aliases
dermintasi: dmtsai,dmtsai@mail.niki.centos.jet
[root@www ~]# postalias hash:/etc/aliases
个人化的邮件转递(普通用户): ~/.forward
#普通用户将自己的邮件同时收一份到jet和dmtsai@mail.niki.centos.jet下。
[dmtsai@www ~]$ vim .forward
# 注意!我现在的身份现在是 dmtsai 这个一般身份,而且在他的家目录下!
dmtsai
jet
dmtsai@mail.niki.centos.jet
[dmtsai@www ~]$ chmod 644 .forward
#该档案所在用户家目录权限,其 group、other 不可以有写入权限。
#.forward 档案权限,其 group、other 不可以有写入权限。
[root@www ~]# postqueue -p #查看MTA邮件队列
[root@www ~]# cd /var/spool/postfix/maildrop
[root@www maildrop]# postcat 5CFBB21DB <==这个档名就是 Queue ID
[root@www ~]# /etc/init.d/postfix restart
[root@www ~]# postfix flush
[root@www ~]# yum install dovecot
[root@www ~]# vim /etc/dovecot/dovecot.conf
# 找到底下这一行,大约是在第 25 行左右的地方,复制新增一行内容如下:
#protocols = imap pop3 lmtp
protocols = imap pop3
[root@www ~]# vim /etc/dovecot/conf.d/10-ssl.conf
ssl = no <==将第 6 行改成这样!
[root@www ~]# /etc/init.d/dovecot start
[root@www ~]# chkconfig dovecot on
[root@www ~]# netstat -tlnp | grep dovecot
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :::110 :::* LISTEN 14343/dovecot
tcp 0 0 :::143 :::* LISTEN 14343/dovecot
# 1. 建立凭证:到系统提供的 /etc/pki/tls/certs/ 目录下建立所需要的 pem 凭证档:
[root@www ~]# cd /etc/pki/tls/certs/
[root@www certs]# make jet.pem
....(前面省略)....
Country Name (2 letter code) [XX]:CH
State or Province Name (full name) []:China
Locality Name (eg, city) [Default City]:bj
Organization Name (eg, company) [Default Company Ltd]:test
Organizational Unit Name (eg, section) []:test
Common Name (eg, your name or your server‘s hostname) []:mail.centos.jet
Email Address []:wang_zengyi@126.com
# 2. 因为担心 SELinux 的问题,所以请关闭selinux,并配置iptables规则
iptables -A INPUT -p TCP -i $EXTIF --dport 993 --sport 1024:65534 -j ACCEPT
iptables -A INPUT -p TCP -i $EXTIF --dport 995 --sport 1024:65534 -j ACCEPT
# 3. 开始处理 dovecot.conf,只要 pop3s, imaps 不要明码传输的咯!
[root@www certs]# cp -a jet.pem /etc/pki/dovecot/jet.pem
[root@www certs]# vim /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
[root@www certs]# vim /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/pki/dovecot/jet.pem
ssl_key = </etc/pki/dovecot/jet.pem
[root@www certs]# vim /etc/dovecot/conf.d/10-master.conf
inet_listener imap {
port = 0
}
inet_listener pop3 {
port = 0
}
# 4. 处理额外的 mail_location 设定值!很重要!否则网络收信会失败:
[root@www certs]# vim /etc/dovecot/conf.d/10-mail.conf
mail_location = mbox:~/mail:INBOX=/var/mail/%u
# 5. 重新启动 dovecot 并且观察 port 的变化:
[root@www certs]# /etc/init.d/dovecot restart
[root@www certs]# netstat -tlnp | grep dovecot
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :::993 :::* LISTEN 14527/dovecot
tcp 0 0 :::995 :::* LISTEN 14527/dovecot
原文:https://www.cnblogs.com/wangzengyi/p/12551520.html