centos7搭建postfix邮件服务器

 

  在使用qq等邮件服务器厂商提供的邮件服务后,发现他们的邮件发送数量是有限制的,随着公司的业务的需求下,咱们须要搭建一个邮件服务器,邮件服务器能够帮助咱们在一些提醒方面和消息推送方面起到帮助。html

理论性语句:linux

1. 邮件系统的简单介绍:

  电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议有下面这些vim

  简单邮件传输协议(Simple Mail Transfer ProtocolSMTP:用于发送和中转发出的电子邮件,占用服务器的25/TCP端口。centos

  邮局协议版本3Post Office Protocol 3:用于将电子邮件存储到本地主机,占用服务器的110/TCP端口。bash

  Internet消息访问协议版本4Internet Message Access Protocol 4:用于在本地主机上访问邮件,占用服务器的143/TCP端口。服务器

  一个最基础的电子邮件系统确定要能提供发件服务和收件服务,为此须要使用基于SMTP协议的Postfix服务程序提供发件服务功能,并使用基于POP3协议的Dovecot服务程序提供收件服务功能。这样一来,用户就可使用Outlook ExpressFoxmail等客户端服务程序正常收发邮件了dom

实际操做:tcp

  1. 准备环境 ,开放须要的端口,并卸载sedmail,域名解析配置,修改hostname
  2. 安装而且配置好postfix发件服务
  3. 安装而且配置好dovect收件服务
  4. 测试,检查发送状况。

2. 准备环境: 

   首先咱们检查咱们的服务器可否telnet通咱们要发送的一些邮件服务商的端口,好比qq,163,gmail等,若是不通的话须要更换服务器,由于此服务器商将这些给拦截了,post

正常的现象是:测试

 

        咱们须要开放咱们须要的端口,端口有25SMTP服务,用于发送邮件),110pop3服务,用于接收邮件)143imap服务,用于接收邮件)

 

若是你只想用pop3服务,那么咱们只须要打开11025端口便可,若是咱们使用了ssl的话,

pop3就须要开放咱们的465(发件) 995(收件)端口

imap就须要开放咱们的465(发件) 993(收件)端口

  2.1 开放端口:

firewall-cmd --add-port=25/tcp --permanent firewall-cmd –-add-port=110/tcp --permanent firewall-cmd --reload

  2.2 移除sendmail

rpm -e sendmail 或者 yum remove sendmail

  2.3 域名解析配置

咱们须要添加A记录和mx记录。首先添加A记录解析到咱们的服务器ip。

   2.4 mx 记录

 

 在须要填入值的地方填入我图片中的对应字符。

  2.5 修改hostname

hostnamectl  set-hostname   mail.域名

  2.6 修改MTA(默认邮件传输代理)

alternatives --config mta 

而后直接回车便可。

检查一下是否是已经设置成功了。

alternatives --display mta

第一行能够看到mta的状态。 例如:mat - status is manual.就是ok了。

3. POSTFIX

postfix是提供发件服务的注意:修改配置文件需备份,如下步骤未包含备份。)

postfix服务程序主配置文件中的重要参数

参数

做用

myhostname

邮局系统的主机名

mydomain

邮局系统的域名

myorigin

从本机发出邮件的域名名称

inet_interfaces

监听的网卡接口

mydestination

可接收邮件的主机名或域名

mynetworks

设置可转发哪些主机的邮件

relay_domains

设置可转发哪些网域的邮件

  3.1 安装 postfix 

centos7里咱们的postfix是系统自带的,可是centos7之前的版本是默认不带的,centos7版本之前是sendmail

若是没有则安装 :

yum install postfix

  3.2 配置:

vim /etc/postfix/main.cf 

 修改内容:

# 75行: 取消注释,设置hostname  myhostname = mail.abc.com # 83行: 取消注释,设置域名 mydomain = abc.com # 99行: 取消注释 myorigin = $mydomain # 116行: 默认是localhost,咱们须要修改为all inet_interfaces = all # 119行: 推荐ipv4,若是支持ipv6,则能够为all inet_protocols = ipv4 # 164行: 添加 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # 264行: 取消注释,指定内网和本地的IP地址范围 mynetworks = 127.0.0.0/8 # 419行: 取消注释,邮件保存目录 home_mailbox = Maildir/ # 571行: 添加 smtpd_banner = $myhostname ESMTP # 添加到最后 # 规定邮件最大尺寸为10M message_size_limit = 10485760 # 规定收件箱最大容量为1G mailbox_size_limit = 1073741824 # SMTP认证 smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject 

以上对应的对应的行数位置可能随着版本不一样会有差别。具体的一些参数含义在本小节前面有解释

  3.3 开启postfix服务并添加到系统自启。

systemctl  restart  postfix
systemctl  enable  postfix

4. 安装并配置dovecot  

       4.1 安装dovecot

yum install dovecot 

  4.2 配置dovect

编辑文件dovecot.conf

vim /etc/dovecot/dovecot.conf 

更改内容:

# 26行: 若是不使用IPv6,请修改成* 
listen = *
#在主配置文件中的第48行,设置容许登陆的网段地址,也就是说咱们能够在这里限制只有来自于某个网段的用户才能使用电子邮件系统。若是想容许全部人都能使用,则不用修改本参数
login_trusted_networks = 192.168.10.0/24更改内容

编辑文件10-auth.conf

vim /etc/dovecot/conf.d/10-auth.conf 

更改内容:

# 9行: 取消注释并修改 disable_plaintext_auth = no # 97行: 添加 auth_mechanisms = plain login 

编辑文件10-mail.conf

vim /etc/dovecot/conf.d/10-mail.conf

更改内容:

# 30行: 取消注释并添加 mail_location = maildir:~/Maildir

编辑文件10-master.conf

vim /etc/dovecot/conf.d/10-master.conf

更改内容:

# 88-90行: 取消注释并添加 # Postfix smtp验证 unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }

注意:若是咱们没有使用ssl的话须要进行下面的操做。使用了则不须要。

编辑文件10-ssl.conf

vim /etc/dovecot/conf.d/10-ssl.conf 

更改内容

# 8行: 将ssl的值修改成 ssl = no

启动dovecot并添加到开机自启。

systemctl restart dovecot
systemctl enable dovecot

5. 收发邮件测试  

   5.1 建立用户

  邮件的用户是和系统用户一致的,也就是说系统用户能够当作邮件用户。

建立用户并设置密码

useradd admin passwd admin

   5.2 使用foxmail进行登录

 

1中咱们须要选择咱们以前开放端口对应的服务器类型。

2中 咱们只须要填入咱们的用户名,例如admin,root

3中 咱们收件和发件都填入咱们的mail.域名。例 mail.abc.com

4 中 咱们若是使用了ssl的话就须要勾选,若是没有使用的话就不须要勾选

填入相应信息后咱们便可登录了。而后咱们能够进行收发邮件了,咱们能够测试给本身的qq发一封邮件.

若是咱们查看日志发现 status=bounced ,那么就意味着qq的邮件服务器将咱们这个服务器IP设为恶意IP,不接收这个IP发送的邮件。也就意味着若是咱们要发邮件到qq邮箱的话,就须要更换服务器ip

若是状态是上面的话,就意味着能够正常发送,还要注意一点的就是咱们邮件服务器的邮件不少时候会被放在垃圾箱里,因此当你发送了邮件你在收件箱没看到,你能够去垃圾箱里面看看有没有。接收方面通常没有什么问题,用qq邮箱发送给本身便可(admin@abc.com

若是你想邮件服务器配置SSL,那么你能够看看centos7邮件服务器SSL配置

 注意事项:

咱们邮件服务器在设定mynetworks 这个值的时候,一行不要设置all,由于会有不少服务器会将你的服务器做为中转邮件服务器,最终致使的你的邮件服务器发送的邮件被qq,163,gamil,这些邮件服务商标记为垃圾邮件。

当某天咱们检查咱们的mail日志(/var/log/maillog)时发现不少邮件发送,并且邮件不是咱们本身产生的话,那么咱们的邮件服务器是出了问题的

这时咱们服务器必定有不少邮件堆积,而后本身邮件会发不出去。

咱们须要作的操做:检查

du -sh /var/spool/postfix/*

查看目录下的deferdeferred的目录大小,经过postqueue –p来查看队列的邮件,经过postsuper -d ALL 删除全部的队列邮件。

 最后附上屏蔽刷postfix的 IP脚本

#!/bin/bash LOGFILE="/var/log/maillog" #统计maillog中authentication failure的IP个数与IP grep "authentication failure" $LOGFILE|awk '{print $7}'|grep -E -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"|sort|uniq -c > af_iplist.txt #取出AF出现大于300次时的IP awk '$1>300 {print $2}' af_iplist.txt > block_ip_list.txt #大于300次AF的IP添加到iptables中 cat block_ip_list.txt|while read line do
/sbin/iptables -nL | grep $line if [ $? != 0 ] then iptables -I INPUT -s $line -j DROP fi
done

参考文档:

http://lomu.me/post/linux-email-server

http://lomu.me/post/SPF-DKIM-DMARC-PTR

相关文章
相关标签/搜索