码迷,mamicode.com
首页 > 其他好文 > 详细

Centos 下搭建电子邮箱服务器postfix+dovecot

时间:2016-08-24 14:44:43      阅读:492      评论:0      收藏:0      [点我收藏+]

标签:

因为同事在做一个电子邮件服务器,准备进行邮件推广什么的,后来遇到些问题,于是我们两个小白一起研究。

网上有很多关于电子邮件服务器搭建的、完整的文档。因此,一些具体的细节和配置,这里就不做详细的说明和解释了。主要讲的是我们两个小白花费大量时间,所查找到的,遇到的问题。

一、背景

postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。

Dovecot 是一个开源的 IMAP 和 POP3 邮件服务器,支持 Linux/Unix 系统。

经典搭配:

postfix(作为发送邮件服务器)+dovecot(作为接收邮件服务器)+mysql(作为数据库)

作为最小白的一个简单的邮件服务器,我们直接用系统用户作为认证用户,没有配置mysql。

二、域名解析

在域名服务提供商那里设置域名解析,example.com 设置了3个域名解析:

第一个是 :A记录,  RR值为 @ ,    指向 服务器的IP地址

第二个是:MX记录, RR值为@, 指向 example.com

第三个是:A记录,RR值为 www, 指向服务器的IP地址

配置完毕后,  ping    www.example.com  如果能提示出你的服务器的IP地址, 证明 www的配置已经生效。

下来还要检查 MX 记录是否生效, 要用nslookup检查一下是否MX记录正确。

在windows系统的命令行控制体输入 : nslookup    -qt=mx    linuxidc.com    回车后,

能显示你的域名   example.com , 就代表你的 MX记录配置正确。

如果MX记录配置不正确, 那用QQ邮箱发邮件, 你就会收到个退信, 退信原因的内容如下 :

收件人(lLee@example.com)所属域名不存在,邮件无法送达。
Name service error for name=linuxidc.com type=MX: Host found but no data record of requested type

三、安装配置postfix+dovecot+cyrus.sasl

系统架构就是这样的  MTA : Postfix
           认证模块:Cyrus SASL + Dovecot SASL
            POP3/IMAP: Dovecot

安装:    Yum install postfix dovecot

     Yum.install cyrus*   


 有一般邮件系统的知识的人知道,需要采用认证机制防止谁都可以用这个MTA发送邮件(open relay)。这个认证机制就是SASL,这里我所接触到的两个sasl软件:Cyrus-SASL和Dovecot中自有的SASL。
 Cyrus-SASL:这个软件的使用saslauthd这个daemon来进行验证,具体的配置文件可以查看/etc/sysconfig/saslauthd这个配置文件。
MECH=pam:使用什么机制来进行验证,这里写的是使用PAM来进行验证。PAM,这个以后有机会再进行论述。

Dovecot-SASL: 这个软件是dovecot对SASL的一个实现,Dovecot官网中提到,Dovecot也实现了SASL。
  Dovcecot-SASL有两个部分,一个是passdb,一个是userdb, passdb用来实现认证,userdb用来实现提取用户的一些信息,比如邮件存储目录,uid等。
 相关的配置可以在/etc/dovecot/dovecot.conf中找到。


 认证过程也是先通过passdb认证,然后在userdb中获取用户信息,从而把该用户的邮件递送给该MUA,然后用户就可以读取邮件了。
 postfix的main.cf这个文件中有个SASL的选项,此处直接设置为smtpd_sasl_type = dovecot
 此处即是sasl使用dovecot的sasl进行验证。即发送邮件时,去dovecot验证,如果通过,就允许邮件发送了。因此,我们只要熟悉了dovecot的sasl怎么做的,就可以不用管postfix的验证了。

 

然后呢,我们根据网上的配置dovecot的sasl验证代码进行测试,始终没能成功,于是,我们就绕过了这个。

以下是相关的postfix和dovecot简单配置:

vi /etc/postfix/main.cf

#begain
#smtpd_sasl_type = dovecot
#smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_delay_reject = no
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_security_options = noanonymous
smtpd_client_restrictions = permit_sasl_authenticated
message_size_limit = 5242880
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
#end

 

vi /etc/dovecot/dovecot.conf

protocols = imap pop3
log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot.info
login_trusted_networks = 0.0.0.0/0
listen = *, ::
disable_plaintext_auth = yes
ssl_disable = no
mail_location = Maildir:~/Maildir
base_dir = /var/run/dovecot/

vi /etc/sasl2/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain login
log_level:3
saslauthd_path:/var/run/saslauthd/mux

四、检测各种配置是否成功

1、查看mta

#alertnatices --display mta

技术分享

 

2、检测postfix与dovecot

状态:service postfix status |  service dovecot status

重启: service postfix|dovecot  restart

有时候会出现:

技术分享

这是centos版本问题,直接使用它提示的命令即可。

 

3、检测默认smtp端口25是否已经监听

Netstat  -an | grep 25

五、遇到的问题

1、本地客户端与电子邮件服务器无法连接

技术分享

 我们这次遇到的问题就是:服务器防火墙25和110端口,没有打开。

 解决方案:

CentOS防火墙iptables的配置方法详解

查看当前所有的iptables配置:    iptables  -L  -n

添加允许INPUT访问规则,以下时常见服务的端口设置,如果需要拒绝访问,则将ACCEPT改为DROP即可

#SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#HTTP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
#HTTPS
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#POP3
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
#SMTP
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
#FTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#DNS
iptables -A INPUT -p tcp --dport 53 -j ACCEPT

保存修改:/etc/rc.d/init.d/iptables save

重启iptables:service iptables restart

开机启动 | 关闭: chkconfig iptables on        chkconfig iptables off

 

或者直接修改配置文件:

vi   /etc/sysconfig/iptables

技术分享

 

2、认证不被允许:

-ERR Plaintext authentication disallowed on non-secure (SSL/TLS) connections. 

pop3-login: Info: Aborted login (tried to use disallowed plaintext auth): user=<>, rip=*,*,*,*, lip=*,*,*,*, session=<OHcXkcc6EgB5Kpmb>

解决方案:

技术分享

 




Centos 下搭建电子邮箱服务器postfix+dovecot

标签:

原文地址:http://www.cnblogs.com/liyulinbill/p/5802682.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!