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

[经验分享] linux服务-邮箱服务postfix+dovecot

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-3-22 08:24:17 | 显示全部楼层 |阅读模式
实验环境:
虚拟机CentOS 6.5
IPADDR=192.168.1.223
域:ltiaw.com


准备工作:
1.搭建好DNS服务并向zone添加mail MX和A记录
vim /var/named/chroot/var/named/ltiaw.zone
加入以下肉容:
mail     IN MX 5 mail.ltiaw.com.
mail     IN A    192.168.1.223
保存

反向
vim /var/named/chroot/var/named/ltiaw.arpa
加入以下肉容:
223    IN MX 5 mail.ltiaw.com.
223    IN PTR mail.ltiaw.com.
保存
/etc/init.d/named restart

DNS搭建可以看上一篇文章这里就不说了

2.更改hostname
vim /etc/sysconfig/network
HOSTNAME=ltiaw.com
保存退出
reboot重启系统

(一)##################下面正式开始搭建邮箱服务器##########################################
yum -y install postfix
安装好后

配置文件位置:
cd /etc/postfix/

vim main.cf  #配置文件
:
inet_interfaces = all    #这个改为all
mynetworks = 168.100.189.0/28, 127.0.0.0/8,192.168.1.0/24   #加入你的内网段192.168.1.0/24
保存退出
查看myhostname
postconf myhostname
[iyunv@ltiaw postfix]# postconf myhostname      
myhostname = ltiaw.com
#上面一开始准备时就已改好hostname了.

重启服务
/etc/init.d/postfix restart
netstat -tlunp |grep 25
看到端口正在listen
开放端口
iptables -I INPUT -p tcp --dport 25 -j ACCEPT

测试:
创建用户ltiaw
useradd ltiaw
passwd ltiaw
安装telnet
yum -y install telnet

telnet localhost 25         #红色字是我打的命令

Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 ltiaw.com ESMTP Postfix
mail from:root@ltiaw.com    #没设置只允许本域发件时,这里from的地址可以乱设~
250 2.1.0 Ok
rcpt to:ltiaw@ltiaw.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
this is a text
.
250 2.0.0 Ok: queued as 02AD440D6A
quit
221 2.0.0 Bye
Connection closed by foreign host.

查看ltiaw的收件
[iyunv@ltiaw ~]# mail -u ltiaw
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/mail/ltiaw": 1 message 1 new
>N  1 root@ltiaw.com        Mon Mar 21 09:58  14/456   
& 1
Message  1:
From root@ltiaw.com  Mon Mar 21 09:58:20 2016
Return-Path: <root@ltiaw.com>
X-Original-To: ltiaw@ltiaw.com
Delivered-To: ltiaw@ltiaw.com
Date: Mon, 21 Mar 2016 09:57:27 +0800 (CST)
From: root@ltiaw.com
To: undisclosed-recipients:;
Status: R

this is a text

成功收件!
最基本的邮箱服务器就搭好了,如果需要用POP3和IMAP来收件的话还要搭建dovecot服务!

(二)###################安装dovecot服务###############################################
yum -y install dovecot
配置文件位置:

ls /etc/dovecot/
conf.d dovecot.conf

vim /etc/dovecot/dovecot.conf
去掉注释protocols = imap pop3 lmtp #启用协议

listen = *, ::   #监听IP
保存退出


继续修改配置文件
cd /etc/dovecot/conf.d/
vim 10-mail.conf
去掉注释 mail_location = mbox:~/mail:INBOX=/var/mail/%u 指定用户目录
保存退出
vim 10-auth.conf
disable_plaintext_auth = no  #改不NO 不禁用auth
保存退出
重启服务
/etc/init.d/dovecot restart
开放POP3的端口110
iptables -I INPUT -p tcp --dport 110 -j ACCEPT
保存
/etc/init.d/iptables save

telnet localhost 110

[iyunv@ltiaw ~]# telnet localhost 110
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.

看到OK

(三)#################测试:##############################################################

linux服务器,搭建DNS postfix+dovecot IPADDR=192.168.1.223
用windows IP=192.168.1.5 安装Foxmail邮件客户端软件
设置windows DNS=192.168.1.223 指向linux服务器

1.  linux 新建用户tom
2.  Foxmail 添加tom邮箱
QQ截图20160322082359.jpg


失败:
在windows ping mail.ltiaw.com 通没问题
查看linux日志
cat /var/log/maillog
发现出错如下
Mar 21 10:36:08 ltiaw dovecot: pop3(tom): Error: chown(/home/tom/mail/.imap/INBOX, -1, 12(mail)) failed: Operation not permitted (egid=502(tom), group based on /var/mail/tom)
Mar 21 10:36:08 ltiaw dovecot: pop3(tom): Error: mkdir(/home/tom/mail/.imap/INBOX) failed: Operation not permitted
Mar 21 10:36:08 ltiaw dovecot: pop3(tom): Error: Couldn't open INBOX: Internal error occurred. Refer to server log for more information. [2016-03-21 10:36:08]
原来是没有INBOX目录

创建INBOX目录并更改拥有者为tom
mkdir -p /home/tom/mail/.imap/INBOX
chown -R tom  /home/tom/mail/.imap/INBOX

再用Foxmail
OK。成功了。
测试下收信,发信。都是成功!
更改为开机自动启动服务
chkconfig postfix on
chkconfig dovecot on

搭建成功

######关于INBOX的问题,总不能每建一个用户都是要手动创建目录吧。
所以直接在用户模板目录:/etc/skel/ 里添加上这个目录
mkdir -p /etc/skel/mail/.imap/INBOX
OK

(四)##############下面继续一些常见的运用################################################

  • 别名群发

vim /etc/aliases
写入
group:   root,ltiaw  #格式:别名:   用户1,用户2,...

保存。
生成数据
postalias hash:/etc/aliases
或者:newaliases

测试:

现在是别名group,代表了,root,ltiaw.两位用户
发信给group:
  echo "123" |mail -s "textgroup" group@ltiaw.com

成功:
[iyunv@ltiaw ~]# mail
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 root                  Mon Mar 21 13:30  18/533   "textgroup"
&

[iyunv@ltiaw ~]# mail -u ltiaw
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/mail/ltiaw": 2 messages 1 new
    1 root@ltiaw.com        Mon Mar 21 09:58  17/560   
>N  2 root                  Mon Mar 21 13:30  18/533   "textgroup"


2.发给一个用户时会转发给定义的用户。
就是在用户家目录下创建.forward文件就行了
具体如下:
再建多一个用户pp
useradd pp
passwd pp
切换到tom
su - tom
vim .forward  #创建.forward文件写入用户名就可.
ltiaw
pp
保存

#切用root用户
su -
发信给tom
echo "testTOM" |mail -s "TEXTTOM" tom
查件用户:ltiaw
[iyunv@ltiaw ~]# mail -u ltiaw
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/mail/ltiaw": 3 messages 1 new 2 unread
    1 root@ltiaw.com        Mon Mar 21 09:58  17/560   
U  2 root                  Mon Mar 21 13:30  19/543   "textgroup"
>N  3 root                  Mon Mar 21 13:39  21/636   "TEXTTOM"

查件用户:pp
[iyunv@ltiaw ~]# mail -u pp
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/mail/pp": 1 message 1 new
>N  1 root                  Mon Mar 21 13:39  21/633   "TEXTTOM"

查件用户:tom
[iyunv@ltiaw ~]# mail -u tom
No mail for tom

tom没收到件。因为我刚在.forward 文件里只加入了ltiaw和pp两个用户。
只要加入tom用户入去tom就能收到件了


3.队列,等待发信的队列

[iyunv@ltiaw ~]# postqueue -p #查看
Mail queue is empty
postsuper -d  xxxxxxx    #删除
postsuper -d  All   
postsuper -h xxxxxxx 保留
postcat -q xxxxxxx 查看肉容

4.启用发送验证
查看:
postconf -d |grep smtpd|grep sasl

[iyunv@ltiaw ~]# postconf -d |grep smtpd|grep sasl
smtpd_sasl_auth_enable = no
smtpd_sasl_authenticated_header = no
smtpd_sasl_exceptions_networks =
smtpd_sasl_local_domain =
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_sasl_type = cyrus

追加到配置文件:
echo "smtpd_sasl_auth_enable = yes" >>/etc/postfix/main.cf

/etc/init.d/postfix restart
启动认证服务:
/etc/init.d/saslauthd start

测试:
telnet localhost 25
ehlo localhost
不成功

查日志
cat /var/log/maillog
Mar 21 15:47:11 ltiaw postfix/smtpd[1540]: warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
Mar 21 15:47:11 ltiaw postfix/smtpd[1540]: fatal: no SASL authentication mechanisms
Mar 21 15:47:12 ltiaw postfix/master[1452]: warning: process /usr/libexec/postfix/smtpd pid 1540 exit status 1
Mar 21 15:47:12 ltiaw postfix/master[1452]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling

上网查询发现需要以下包:
cyrus-sasl-2.1.23-13.el6_3.1.x86_64
saslwrapper-0.14-1.el6.x86_64
cyrus-sasl-md5-2.1.23-13.el6_3.1.x86_64
cyrus-sasl-lib-2.1.23-13.el6_3.1.x86_64
python-saslwrapper-0.14-1.el6.x86_64
cyrus-sasl-devel-2.1.23-13.el6_3.1.x86_64
安装以上包.
然后重启服务:
[iyunv@ltiaw ~]# /etc/init.d/postfix restart
关闭 postfix:                                             [确定]
启动 postfix:                                             [确定]
[iyunv@ltiaw ~]# /etc/init.d/saslauthd restart
停止 saslauthd:                                           [确定]
正在启动 saslauthd:                                       [确定]
[iyunv@ltiaw ~]# telnet 192.168.1.223 25
Trying 192.168.1.223...
Connected to 192.168.1.223.
Escape character is '^]'.
220 ltiaw.com ESMTP Postfix
ehlo 192.168.1.223  #输入这个
250-ltiaw.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN   #看到这个已经成功了
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

怎么配置saslauthd 要下次再研究了,网上找到如下的:
修改postfix的cf文件使支持smtp认证
  在/etc/postfix/main.cf文件最后加上:
  smtpd_sasl_auth_enable = yes
  smtpd_delay_reject=yes
  smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated permit_auth_destination reject
  smtpd_client_restrictions = permit_sasl_authenticated
  broken_sasl_auth_clients = yes
  smtpd_sasl_security_options = noanonymous
  就支持smtp认证了。其余的配置请参考/etc/postfix/main.cf.default和sample-*文件,这里不多说。
  现在telnet 25口应该有下面的提示
  telnet 127.0.0.1 25
  Trying 127.0.0.1...
  Connected to 127.0.0.1.
  Escape character is '^]'.
  220 mailx.bjcnuol.com ESMTP Postfix
  ehlo 127.0.0.1
  250-mailx.bjcnuol.com
  250-PIPELINING
  250-SIZE 10240000
  250-ETRN
  250-AUTH LOGIN PLAIN
  250-AUTH=LOGIN PLAIN
  如果有就差不多成功了。
  3.配置sasl使支持smtp认证
  # touch /usr/local/lib/sasl/smtpd.conf
  # echo pwcheck_method:shadow /usr/local/lib/sasl/smtpd.conf
  因为postfix用户无权读取/etc/shadow所以必须把shadow文件的权限改成postfix,这不能不说是一个缺陷,如果你觉得不安全,你可以将认证方式该为sasldb的方式,但是这样需要额外创建用户和口令不能和邮件用户的口令保持一致修改口令也不方便。此外还可以用pwcheck守护进程,但我没试出来感兴趣的朋友可以试试,如果成功了别忘了告诉我。


5.下面继续过滤垃圾邮件功能.
vim /etc/postfix/main.cf
去掉注释header_checks = regexp:/etc/postfix/header_checks

规则文件
vim /etc/postfix/header_checks
对标题过滤加入
/^Subject:.*sex/ REJECT 不能出现带sex的标题      #拒绝信息
/sex/ REJECT 不能出现带sex的所有内容
/etc/init.d/postfix restart

#也可以直接利用Foxmail 软件提供的过滤库



运维网声明 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-194019-1-1.html 上篇帖子: Postfix系统退信抄送到postmaster@***.com邮箱地址需要修改什么配置? 下篇帖子: Postfix-2.11+Dovecot-2.0.9+MySQL+Nginx+Cyrus-sasl+Extmail-1.2实现基于虚拟用户的邮件系统架构 linux 邮箱
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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