Linux虚拟机下搭建邮件服务器(postfix+dovecot)

为什么80%的码农都做不了架构师?>>>   hot3.png

为避免接收邮件的服务器将我们发送的邮件当作垃圾邮件,必须添加DNS解析记录。DNS解析记录可以在DNSPod上添加。DNSPod是国内最大的DNS解析服务提供商,同时也提供免费的DNS解析。 在DNS上注册免费的用户后,点击我的域名,选择添加域名,添加一个域名(此处假设域名为example.com)后即可添加记录。在此,我们加入下面三条记录:

主机记录         记录类型            记录值              MX优先级            TTL
 mail              A           198.162.1.1              -              600
  @                MX           mail.example.com            10           600
  @               TXT           v=spf1 a mx -all            -             600

记录值为“v=spf1 a mx ~all”记录值并没有固定的格式,不过大部分TXT记录是用来做SPF反垃圾邮件的,最典型的spf格式的txt记录例子为“v=spf1 a mx ~all”,表示只有这个域名的a记录和mx记录中的ip地址有权限使用这个域名发送邮件。

Postfix 监听25端口主要负责发邮件

Dovecot 监听110端口主要负责收邮件

1、首先设置hostname 事先设置好hostname的话,Postfix可以自动配置好很多参数,节省时间。 我们要假设的网站域名为100p.com,要搭建独立的邮件服务器,就把主机名设置为mail.100p.com。

#echo 'mail.100p.com' > /etc/hostname
#hostname -F /etc/hostname

2、安装Postfix

#yum -y install postfix* 

3、基本配置 Postfix的配置文件位于/etc/postfix/main.cf。一般有以下几个重要参数需要设置:

复制代码

 *myhostname*  //主机名
  myhostname = mail.100p.com
    
  *myorigin*  //外发邮件时发件人的邮件域名
   myorigin = $myhostname  //在通过Postfix发送邮件的时候,如果From字段不完整,Postfix会根据myorigin的值将地址补全为 *@mail.100p.com
    
  *mynetworks*  //需要收发的客户端的地址
   mynetworks = 20.0.2.1/144, 20.0.8.1/144, 127.0.0.0/8   //mynetworks指定了本地网络的IP段,默认只包含主机自己,你可以添加需要收发的客户端的地址。
  
  *mydomain*   //使用邮件域
   mydomain = 100p.com   //mydomain 设置本地网络的邮件域
       
  *mydestination*  //可接受邮件地址域名
   mydestination = 100p.com, mail.100p.com   //mydestination指定了postfix在收到这些域名地址为目标的邮件时,作为接受方收下邮件。如果收到的邮件既不符合转发规则,又不符合接受规则,则拒绝收信。
 
  *sasl*  //sasl认证  
   smtpd_sasl_auth_enable = no  //smtp不需要SASL认证时,设置为no。
复制代码
 

4、 重启服务

配置完postfix的主要参数之后,需要重启postfix服务,重启方法如下:
 #service postfix restart
 #/etc/init.d/postfix  restart

   服务重启失败,postfix - master dead but pid file exists
     remove /var/spool/postfix/pid/master.pid 

如果还存在这个问题,可以查看端口

  # netstat  -lnp | grep :25

杀死进程,重新启动postfix服务

5、安装dovecot,启动服务

#yum -y install dovecot

 #service devocot restart 

配置文件,添加一下内容

# vi /etc/dovecot/dovecot.conf

protocols = imap pop3 lmtp
protocols = pop3
disable_plaintext_auth = no
ssl = no

1.安装Postfix

yum -y install postfix

安装完成还需要替换系统自带的sendmail:

rpm -e sendmail

或者

yum remove sendmail

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

alternatives --config mta

然后直接回车即可。 检查一下是不是已经设置成功了。

alternatives --display mta

第一行可以看到mta的状态。 例如:mat - status is manual.

2.安装Dovecot

yum -y install dovecot

3.配置Postfix 编辑/etc/postfix/main.cf,可以下载下来修改,也可以使用vi进行编辑:

vi /etc/postfix/main.cf

修改如下:

# 75行: 取消注释,设置hostnamemyhostname = mail.lomu.me
# 83行: 取消注释,设置域名mydomain = lomu.me
# 99行: 取消注释myorigin = $mydomain
# 116行: 修改inet_interfaces = all
# 119行: 推荐ipv4,如果支持ipv6,则可以为allinet_protocols = ipv4
# 164行: 添加mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 264行: 取消注释,指定内网和本地的IP地址范围mynetworks = 127.0.0.0/8, 10.0.0.0/24
# 419行: 取消注释,邮件保存目录home_mailbox = Maildir/
# 571行: 添加smtpd_banner = $myhostname ESMTP
# 添加到最后
# 规定邮件最大尺寸为10Mmessage_size_limit = 10485760
# 规定收件箱最大容量为1Gmailbox_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
修改好了之后使用/etc/rc.d/init.d/postfix start开启postfix,使用chkconfig postfix on将postfix开机启动。

4.配置Dovecot 修改如下:

[root@mail ~]# vi /etc/dovecot/dovecot.conf# 26行: 如果不使用IPv6,请修改为*
listen = *

[root@mail ~]# vi /etc/dovecot/conf.d/10-auth.conf# 9行: 取消注释并修改
disable_plaintext_auth = no
# 97行: 添加
auth_mechanisms = plain login

[root@mail ~]# vi /etc/dovecot/conf.d/10-mail.conf
# 30行: 取消注释并添加
mail_location = maildir:~/Maildir

[root@mail ~]# vi /etc/dovecot/conf.d/10-master.conf
# 88-90行: 取消注释并添加# Postfix smtp验证
unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
}

[root@mail ~]# /etc/rc.d/init.d/dovecot start
Starting Dovecot Imap:     [ OK ]

[root@mail ~]# chkconfig dovecot on 

遇到的问题

接收不到邮件

修改配置文件conf.d/10-mail.conf

去掉 mail_location = mbox:~/mail:INBOX=/var/mail/%u前面的#

解决:登录邮件接收用户执行mkdir -p ~/mail/.imap/INBOX

转载于:https://my.oschina.net/qqlet/blog/1585749

你可能感兴趣的:(Linux虚拟机下搭建邮件服务器(postfix+dovecot))