设为首页 收藏本站
查看: 3007|回复: 0

[经验分享] postfix+sasl+dovecot

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-9-28 08:53:05 | 显示全部楼层 |阅读模式
一、邮件服务依赖于DNS服务,所以先配置一个DNS服务器(我的地址是10.0.146.18)
1.修改主机名
# hostname mail.fsy.com
# vim /etc/hostname
修改为:mail.fsy.com
2.安装bind并修改其配置文件
# yum -y install bind
# vim /etc/named.conf
去掉options中的:
listen-on port 53 { 127.0.0.1; };
allow-query     { localhost; };
3.配置正向区域和反向区域,并测试有无语法错误
# vim /etc/named.rfc1912.zones
添加:
zone "fsy.com" IN {
        type master;
        file "fsy.com.zone";
        allow-update { none; };
        allow-transfer { none; };
};
zone "146.0.10.in-addr.arpa" IN {
        type master;
        file "10.0.146.zone";
        allow-update { none; };
        allow-transfer { none; };
};
# named-checkconf(测试有无语法错误)
4.编辑正向和反向区域文件
# cd /var/named/
# vim fsy.com.zone(编辑正向区域文件)
添加以下内容:
$TTL 86400
@       IN      SOA     ns.fsy.com. admin.fsy.com. (
                        2016092501
                        2H
                        10M
                        3D
                        1D)
                IN      NS      ns
                IN      MX      10      mail
ns              IN      A       10.0.146.18
mail            IN      A       10.0.146.18
www           IN      A       10.0.146.18
# vim 10.0.146.zone(编辑反向区域文件)
添加以下内容:
$TTL 86400
@               IN      SOA     ns.fsy.com.     admin.fsy.com. (
                                2016092501
                                2H
                                10M
                                3D
                                1D)
                IN      NS      ns.fsy.com.
18              IN      PTR     ns.fsy.com.
18              IN      PTR     mail.fsy.com.
18              IN      PTR     www.fsy.com.
5.修改区域配置文件的属组和权限,并测试有无语法错误
# chgrp named fsy.com.zone 10.0.146.zone
# chmod 640 fsy.com.zone 10.0.146.zone
# named-checkzone "fsy.com" fsy.com.zone
# named-checkzone "146.0.10.in-addr.arpa" 10.0.146.zone
6.重启DNS服务,使其开机自动启动,并测试
注意:请先更改本机的DNS服务器
# vim /etc/resolv.conf
nameserver 10.0.146.18
# service named restart
# chkconfig named on
# dig -t MX fsy.com @10.0.146.18
# dig -t A mail.fsy.com @10.0.146.18
一切正常!
二、想要实现基于mysql的虚拟用户,所以先安装mysql(这里用rpm包安装)
# yum install mysql-server mysql-devel
# service mysqld start
# chkconfig mysqld on
三、编译安装postfix,(我这里用 postfix-2.10.10.tar.gz,相关软件包可以到postfix官网下载)
注意:首先同步一下时间,取得和硬件时间一致的时间
# hwclock -s
1.解压
# tar xf postfix-2.10.10.tar.gz
# cd postfix-2.10.10
2.建立postfix和postdrop组和用户
# groupadd -g 2525 postfix
# useradd -g postfix -u 2525 -s /sbin/nologin -Mpostfix
# groupadd -g 2526 postdrop
# useradd -g postdrop -u 2526 -s /sbin/nologin -M postdrop
3.安装所需软件包
# yum -y install cyrus-sasl-devel
# yum -y install gcc
# yum install db*-devel
4.安装
#make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl  -DUSE_TLS ' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2  -lssl -lcrypto'
释义:
CCARGS:指明头文件位置,CCARGS=-DHAS_MYSQL 指明启用mysql的连接能
-I/usr/include/mysql 指明mysql的头文件位置
-DUSE_SASL_AUTH启用SASL认证
-I/usr/include/sasl指明SASL头文件位置
-DUSE_TLS使SMTP支持smtps协议
AUXLIBS:指明库文件位置,-L/usr/lib/mysql 指明MySQL库文件位置
-lmysqlclient指明MySQL客户端库文件
-lz压缩库文件
-lm模块库文件
-lsslssl的库文件
# make
# make install
按照以下的提示输入相关的路径([]号中的是缺省值,”]”后的是输入值,省略的表示采用默认值)

install_root: [/] /
tempdir: [/root/postfix-2.10.10] /root/postfix-2.10.10
config_directory: [] /etc/postfix
command_directory: [] /usr/sbin
daemon_directory: [] /usr/libexec/postfix
data_directory: [] /var/lib/postfix
html_directory: [] no
mail_owner: [] postfix
mailq_path: [] /usr/bin/mailq.postfix
manpage_directory: [] /usr/share/man
newaliases_path: []/usr/bin/newaliases.postfix
queue_directory: [] /var/spool/postfix
readme_directory: [] /usr/share/doc/postfix-2.6.6/README_FILES
sendmail_path: [] /usr/sbin/sendmail.postfix
setgid_group: [] postdrop
5、生成aliases.db文件
# newaliases
# ls /etc/aliases.db
6、修改配置文件
# cd /etc/postfix/
# vim main.cf
mynetworks = 192.168.182.0/24, 127.0.0.0/8(定义给哪些网段中继邮件)
myhostname = mail.fsy.com(定义主机名)
myorigin = $mydomain
mydomain = fsy.com
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
ns.$mydomain
inet_interfaces = all监听的ip地址
说明:
mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问
myhostname 参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名;
myorigin参数用来指明发件人所在的域名,即做发件地址伪装;
mydomain 参数指定您的域名,默认情况下,postfix将myhostname的第一部分删除而作为mydomain的值;
mydestination参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接收到哪个域名的邮件;

5.现在即可启动测试了(此处可能遇到服务无法启动,看日志)
#  service postfix restart
此时可使用本地用户测试邮件收发了
四、安装dovecot,实现收邮件
1.安装:
# yum -y install dovecot
2.修改配置文件
# vim /etc/dovecot/dovecot.conf ,修改以下内容
protocols = pop3 imap lmtp
login_trusted_networks = 0.0.0.0/0
# cd /etc/dovecot/conf.d
# vim 10-auth.conf 修改如下内容
disable_plaintext_auth = yes
# vim 10-ssl.conf修改如下内容
ssl = no
# vim 10-mail.conf修改以下内容
mail_location = mbox:~/mail:INBOX=/var/mail/%u
mbox_write_locks = fcntl
3.创建用户,并且在用户家目录下创建mail/.imap/INBOX
mkdir -p mail/.imap/INBOX
4.启动服务,并将其添加至服务列表中
# service dovecot start
# chkconfig dovecot on
5.可以测试使用了
如:# telnet mail.fsy.com 110
Trying 10.0.146.18...
Connected to mail.fsy.com.
Escape character is '^]'.
+OK Dovecot ready.
user openstack
+OK
pass 123456
+OK Logged in.
LIST
+OK 5 messages:
1 283
2 276
3 278
4 278
5 281
.
retr 2

五、配置SASL (此时我的系统上有一个用户hadoop,密码为:123456)
1.、编辑配置文件
# vim /etc/sysconfig/saslauthd
MECH=shadow
2、启动sasl服务,并使其开机自动启动
# service saslauthd start
# chkconfig saslauthd on
saslauthd -v: 显示当前主机saslauthd服务所支持的认证机制,默认为pam
3、测试命令进行测试
# testsaslauthd -u hadoop -p 123456
4、说明基于哪种方式实现认证
# vim /usr/lib/sasl2/smtpd.conf
添加如下内容:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
5、重启sasl服务,使其读取smtpd.conf这一配置文件
# service saslauthd restart
6、测试是否支持SASL
# postconf -a
其中出现:cyrus,表明支持SASL
7、编辑postfix的配置文件,添加以下内容
# vim /etc/postfix/main.cf
############################CYRUS-SASL############################
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_path = smtpd
smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!
释义:
broken_sasl_auth_clients = yes是否启用客户端sasl验证
smtpd_recipient_restrictions=
permit_mynetworks允许本地网络
permit_sasl_authenticated允许sasl验证通过的用户
reject_invalid_hostname拒绝主机名不合法的用户
reject_non_fqdn_hostname拒绝主机名不是fqdn格式的用户
reject_unknown_sender_domain拒绝无法识别的发件人域
reject_non_fqdn_sender拒绝不是fqdn格式的发件人
reject_non_fqdn_recipient拒绝没有fqdn格式的发件人
reject_unknown_recipient_domain拒绝无法识别的收件人域
reject_unauth_pipelining拒绝无法验证的管道
reject_unauth_destination拒绝非本域的收件人
smtpd_sasl_auth_enable = yes启用sasl认证功能
smtpd_sasl_local_domain = $myhostname本地主机不用认证
smtpd_sasl_security_options = noanonymous不主持匿名用户
smtpd_sasl_path = smtpdsmtpd要使用sasl功能
smtpd_banner =显示欢迎信息

为了显示效果,修改如下
mynetworks = 127.0.0.0/8
7、重启服务,可以测试!
[iyunv@mail ~]# service postfix restart
8、注意:用户认证需要生成需要将用户名和密码转换为base64
[iyunv@mail ~]# echo -n "hadoop" | openssl base64
[iyunv@mail ~]# echo -n "123456" | openssl base64

测试:
测试结果:
[iyunv@mail ~]# telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 Welcome to our mail.fsy.com ESMTP,Warning: Version not Available!
auth login
334 VXNlcm5hbWU6
aGFkb29w
334 UGFzc3dvcmQ6
MTIzNDU2
235 2.7.0 Authentication successful
mail from:hadoop@fsy.com
250 2.1.0 Ok
rcpt to:hello@aol.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
hello hao are you
.
250 2.0.0 Ok: queued as 76B841FDE5
quit   
221 2.0.0 Bye
Connection closed by foreign host.



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-278457-1-1.html 上篇帖子: 实现postfix基于客户端的访问控制 下篇帖子: postfix邮件服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表