【cyrus-sasl】CentOS6下Postfix邮件服务器配置
参考文章:
http://www.cnblogs.com/apexchu/p/4271264.html
http://blog.eqoe.cn/posts/build-perfect-mail-server.html
https://www.v2ex.com/t/161912
一、删除系统自带的sendmail
yum remove sendmail
或者
rpm -e sendmail
二、安装crontabs(计划任务)服务
yum install crontabs
service crond start
chkconfig crond on
三、安装postfix,cyrus-sasl,cyrus-imapd
如果yum提示找不到软件包,请换一下源,请参考centos 6推荐使用epel源(http://blog.51yip.com/linux/1337.html)
yum install postfix
yum install cyrus*
四、更改默认邮件传输代理(MTA)
alternatives --config mta
There are 2 programs which provide 'mta'. (共有 1 个程序提供“mta”)
Selection Command
1 /usr/sbin/sendmail.exim
*+ 2 /usr/sbin/sendmail.postfix
按 Enter 来保存当前选择[+],或键入选择号码:2
Enter to keep the current selection[+], or type selection number: 2
五、postfix,cyrus-sasl,cyrus-imapd相关配置
1、postfix主配置文件main.cf
vi /etc/postfix/main.cf
做如下修改
// 76行,将等号后面的部分改写为本机主机名
myhostname = mail.kyzy.cc
// 82行,设置域名
mydomain = kyzy.cc
// 97行,把$myhostname改为$mydomain
myorigin = $mydomain
// 112行,把后面的localhost改成all
inet_interfaces = all
// 163行,把前面的注释拿掉,并加一下$mydomain
mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain
// 209行,把前面的注释拿掉。
local_recipient_maps =
// 257行 Postfix默认将子网内的机器设置为可信任机器,如果只信任本机,就设置为host
mynetworks_style = host
// 263行,设置内网和本地IP
mynetworks = 受信任的IP地址,千万不要用0.0.0.0/0,不然分分钟就变成垃圾邮件中转服务器
// 303行 配置哪些地址的邮件能够被Postfix转发,当然是mydomain的才能转发,否则其他人都可以用这台邮件服务器转发垃圾邮件了
relay_domains = $mydomain
// 426行,设置邮件收取目录(【注意】dovecot的10-mail.conf中的mail_location=maildir:~/Maildir虽然位置代表同一个,但是设置的值却不是一样的)
home_mailbox = Maildir/
// 568行,把前面的注释拿掉
smtpd_banner = $myhostname ESMTP $mail_name
在main.cf文件的底部加上以下内容
# 使用SMTP认证
smtpd_sasl_auth_enable = yes
# 让不支持RFC2554的smtpclient也可以跟postfix做交互。
broken_sasl_auth_clients = yes
# 指定SMTP认证的本地域名
smtpd_sasl_local_domain = $myhostname
# 取消匿名登陆方式
smtpd_sasl_security_options = noanonymous
# 设定邮件中有关收件人部分的限制
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
# 设置允许范围
smtpd_sasl_security_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
# 邮件大小
message_size_limit = 15728640
# 设置连接cyrus-imapd的路径
mailbox_transport=lmtp:unix:/var/lib/imap/socket/lmtp
如果不加local_recipient_maps
这个配置,收邮件收不到,下面是qq的退信。
收件人邮件地址([email protected])不存在,邮件无法送达。host
mail.kyzy.cc[122.225..] said: 550 5.1.1: Recipient address
rejected: User unknown in local recipient table (in reply to RCPT TO
command)
2、cyrus-sasl配置
vi /etc/sasl2/smtpd.conf
在文件尾部加上以下内容
# 记录log的模式
log_level: 3
# 设置一下smtp寻找cyrus-sasl的路径
saslauthd_path:/var/run/saslauthd/mux
在这里要提一下的32位的机器和64位的机器smtpd.conf的路径是不一样的。
这是CentOS5.5 32位机器上smtpd的配置文件
ls |grep conf
Sendmail.conf
smtpd.conf
pwd
/usr/lib/sasl2
这是CentOS6.0 64位机器上smtpd的配置文件,其他地方没有smtpd的配置文件
ls /etc/sasl2/ |grep smtpd
smtpd.conf
3、配置cyrus-imapd,主要配置文件有下面三个
/etc/sysconfig/cyrus-imapd
/etc/cyrus.conf
/etc/imapd.conf
这里是默认的配置,也就是说上面三个文件我是没有动过的。在这里提醒一下imapd.conf在这个文件里面,你可以设置管理账号,设置邮件存放目录,设置密码连接方式等。
六、启动postfix,cyrus-sasl,cyrus-imapd
启动cyrus-imapd服务,就可以同时提供pop和imap服务,如果你已安装了dovecot服务就可以删除掉,cyrus-imapd和dovecot二者选其一就行了,二都可以提供pop和imap服务,不过cyrus-imapd可以为每个用户创建一个信息,而且信箱具有层次结构,比较好管理。建议用cyrus-imapd。
/etc/init.d/postfix start
/etc/init.d/saslauthd start
/etc/init.d/cyrus-imapd start
chkconfig postfix on
chkconfig saslauthd on
chkconfig cyrus-imapd on
chkconfig postfix off
chkconfig saslauthd off
chkconfig cyrus-imapd off
service postfix stop
service saslauthd stop
service cyrus-imapd stop
service postfix restart
service saslauthd restart
service cyrus-imapd restart
添加账户
useradd noreply
passwd noreply
七、测试cyrus-sasl
设置cyrus的密码
passwd cyrus
系统用户和密码
testsaslauthd -u cyrus -p 'cyruspwd111' (testsaslauthd -u noreply -p 'noreplypwd111')
如果显示如下内容,说明smtp是没有什么问题
0: OK "Success."
八、cyrus-imapd生产邮件管理员账号,并添加测试账号
安装完cyrus-imapd后会产生一个管理账号是cyrus,所属用户组是mail
imapd.conf里面默认的管理员账号就是cyrus
id cyrus
uid=76(cyrus) gid=12(mail) groups=76(saslauth),12(mail)
64位系统
cyradm -u cyrus localhost --auth plain
32位系统
cyradm -u cyrus localhost
verify error:num=18:self signed certificate
Password:
进去后,我们来添加一下测试账号
cyradm -u cyrus localhost --auth plain
IMAP Password:
localhost> cm tank
localhost> lm
tank (\HasNoChildren)
localhost> quit
【小知识】cyradm删除邮箱(deletemailbox: Permission denied)
cyradm -u cyrus localhost --auth plain
localhost> sam tank cyrus c (有的版本可能是d)
cyrus kxc
anyone lrs
localhost> dm tank
localhost>
这样我们可以在/var/spool/imap中看到,生成的目录,32位机器和64位机器生成的目录是不一样的
这是64位系统生成的目录
ls
user^tank
pwd
/var/spool/imap/u
这是32位系统生成的目录
ls
tank
pwd
/var/spool/imap/t
九、测试收发邮件
测试前添加一下DNS
@或者空 MX 默认 优先级10 mail.kyzy.cc
【注意】v=dkim1那条记录见文章结尾链接配置教程。
方法有很多,我们可以利用telnet来测试,不过用telnet来测试收发邮件比较麻烦,用linux自带的mail命令就方便多了
echo "content" | mail -s "subject" [email protected]
查看邮件队列
mailq
删除邮件队列
postsuper -d ALL
telnet mail.kyzy.cc 25
开始输入
helo noreply
auth login
bm9yZXBseQ== (base64加密后的用户名noreply)
Tm***************MjM0 (base64加密后的密码noreplypwd111)
mail from:<noreply>
rcpt to:<[email protected]>
data
From:[email protected]
To:[email protected]
Subject:test
test
.
最后这个小数点一定要加上
如果发件人是[email protected]想改成[email protected]则需要增加系统用户noreply,因为postfix用户其实就是linux系统用户
[button color="info" icon="" url="" type="round"]推荐相关文章[/button]
[post cid="97" /]
[post cid="98" /]
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭