Centos6.5搭建邮件服务器(Postfix+Dovecot )

本文的目标:

搭建一个内部的邮件服务器,最终可实现:用户在一台内部的邮件服务器上互相发送邮件(换句话说就是:一个邮件服务器上创建多个用户,多个用户之间可以互相发送邮件),邮件服务器不需要将邮件转发到外部邮件服务器上。
Postfix本身没有认证功能所以只能借助于第三方认证组件SASL来实现。与Postfix配合较好的SASL有:dovecot-SASL和Cyrus-SASL,以及Courier-Authlib这几款组件。本文使用的是Dovecot-SASL认证方式,如想使用Cyrus-SASL方式,可参考运维那点事的博文


本文参考博文:

http://blog.jjonline.cn/linux/185.html
https://blog.51cto.com/11038104/1916669
http://cn.linux.vbird.org/linux_server/0380mail.php#postfix_pkg


注意:

『 # 』符号是批注的意思;
所有设定值以类似『变量』的设定方法来处理,例如myhostname = mail.netdj.net,请注意等号的两边要给予空格符,且第一个字符不可以是空白(即『 my..』),要由行首写起(即『my..』);
可以使用『 $ 』来延伸使用变量设定,例如myorigin = $myhostname,会等于myorigin = mail.netdj.net;
如果该变量支持两个以上的数据,则使用空格符来分隔,不过建议使用逗号加空格符『, 』来处理。例如: mydestination = $myhostname, $mydomain, linux.netskills.net,意指mydestination支持三个数据内容之意。
可使用多行来表示同一个设定值,只要在第一行最后有逗号,且第二行开头为空格符, 即可将数据延伸到第二行继续书写(所以刚刚第二点才说,开头不能留白!);
若重复设定某一项目,则以较晚出现的设定值为准!


部分参数解读:

  • myhostname:设定主机名,需使用FQDN
  • mydomain:这个项目默认会取$myhostname第一个『 . 』之后的名称(默认为mydomain = $myhostname)
  • myorigin :这个项目在设定『邮件头上面的 mail from 的那个地址』, 也就是代表本 MTA 传出去的信件将以此设定值为准喔!如果你在本机寄信时忘记加上 Mail from 字样的话, 那么就以此值为准了
  • inet_interfaces :设定postfix的监听接口,默认只监听127.0.0.1,根据情况调整,有一回我调整成了$hostname只对我的业务地址进行监听,但是配置完成,在启动postfix服务时显示false但没有其他任何报错,通过查看/var/log/maillog,发现是因为找到不$hostname对应的地址,结果我在/etc/hosts下面怎加了一个条目就好了。
  • inet_protocols :设定postfix的监听IP协议(根据实际情况选择v4或v6)
  • mydestination :设定『能够收信的主机名』,服务器只接收目的为mydestination定义范围内的邮件。在本环境中,需要将mydomain加入进去,否则服务器会拒收邮件(服务器错误: '554 5.7.1 <mail2@netdj.net>: Recipient address rejected: Access denied')
  • mynetworks :规定信任的客户端(极重要)

第一步、关闭iptables、selinux、更改主机名

hostname mail.netdj.net
vim /etc/sysconfig/network
    HOSTNAME=mail.netdj.net
/etc/init.d/iptables stop
chkconfig --level 3 iptables off
vim /etc/selinux/config
    SELINUX=disable
setenforce 0

第二步、安装Postfix、Dovecot

#本次使用的Centos6.5本身就带postfix所以不用安装
yum install dovecot -y

第三步、配置postfix

vim /etc/postfix/main.cf
    # 约75行: 取消注释,设置主机名
    myhostname = mail.netdj.net
    # 约83行: 取消注释,设置域名
    mydomain = netdj.net
    # 约99行: 取消注释
    myorigin = $mydomain
    # 约116行: 修改,默认为localhost(127.0.0.1)
    inet_interfaces = all
    #约119行: 推荐ipv4,如果支持ipv6,则可以为all
    inet_protocols = ipv4
    #约164行: 指定可接收邮件的主机名或域名
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    #约264行: 取消注释,指定内网和本地的IP地址范围(可以作为client)
    mynetworks = 10.0.0.0/8, 127.0.0.0/8, 192.168.0.0/16
    #约419行: 取消注释,邮件保存目录
    home_mailbox = Maildir/
    #约571行: 指定MUA通过smtp连接postfix时返回的header头信息
     smtpd_banner = $myhostname ESMTP

     # 添加到最后
     #规定邮件单封最大尺寸为5M(单位是Byte)
     message_size_limit = 5242880
     # 规定收件箱最大容量为20M(单位是Byte)
     mailbox_size_limit = 20971520
     # 启用Dovecot-SASL
     smtpd_sasl_type = dovecot
     smtpd_sasl_path = private/auth
     #启用SMTP认证
     smtpd_sasl_auth_enable = yes
     #禁止匿名登录
     smtpd_sasl_security_options = noanonymous
     #设置sasl的本地信任域
     smtpd_sasl_local_domain = $myhostname
     #设置收件人地址过滤规则,其匹配策略是:“从上至下逐条检测,有匹配即停止”,根据实际情况进行配置,不一定完全复制。
     smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject

     ##设置收件人地址过滤规则
     ##smtpd_recipient_restrictions = permit_auth_destination, reject
     ##定义发件人地址过滤规则
     ##smtpd_sender_restrictions = permit_sasl_authenticated, reject

smtpd_recipient_restrictions解读

#permit_mynetworks:允许IP为mynetworks的客户使用本邮件系统寄出邮件
#permit_auth_destination:这个相当于允许发邮件给目的为$mydestination中定义的内容,如果不配置这一项,并且没有配置permit_mynetworks的话,就会报错554 5.7.1 <mail2@netdj.net>: Recipient address rejected: Access denied'
#permit_sasl_authenticated:允许通过SMTP认证的用户向外发送邮件
#reject_unauth_destination:当收件人地址不包括在Postfix的授权网络内时,将拒绝发送邮件。
以下这条命令的意思是:允许给目的为$mydestination的发邮件,除此之外允许通过sasl认证的用户发邮件
#smtpd_recipient_restrictions = permit_auth_destination, permit_sasl_authenticated, reject


第四步、配置Dovecot

vim /etc/dovecot/dovecot.conf
    #26行: 如果不使用IPv6,请修改为*
    listen = *
vim /etc/dovecot/conf.d/10-auth.conf
    #9行: 取消注释并修改,使用明文认证
    disable_plaintext_auth = no
    #97行: 认证机制为:简单登录----->dovecot 验证机制
    auth_mechanisms = plain login        
vim /etc/dovecot/conf.d/10-mail.conf
     #30行: 指定位置与postfix的main.cf的mailbox指定为一致
     mail_location = maildir:~/Maildir
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
      }

第五步、重启服务,添加开机启动项

/etc/init.d/postfix start
/etc/init.d/dovecot start
/etc/init.d/postfix restart
/etc/init.d/dovecot restart
chkconfig dovecot on
chkconfig postfix on

第六步、查看端口

Centos6.5搭建邮件服务器(Postfix+Dovecot )


第七步、创建用户与该用户邮件存放目录

useradd mail1 ; echo "123456" | passwd --stdin mail1
useradd mail2 ; echo "123456" | passwd --stdin mail2

su - mail1
mkdir Maildir
su - mail2
mkdir Maildir

转载于:https://blog.51cto.com/10019069/2108297

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值