● 搭建邮件服务器

公司需要注册几个小程序,注册小程序需要邮箱,腾讯企业邮箱新账户需要绑定手机号和个人微信,不适合批量使用。昨天用turbomail搭建了邮件服务,功能很强大,但仅限于windows。因某些原因,服务器操作系统今天上午更改为Linux,所以需要重新搭建一套邮件服务。

服务软件

Postfix

Postfix是实现SMTP协议的软件,作为邮件发送服务。

Dovecot

Dovecot实现了POP和IMAP协议,作为邮件收取服务。

Sasl

Sasl登陆验证服务,在下面的介绍可以看到Postfix作为邮件发送服务器,不能无限制的转发任意邮件,应当只转发它信任的发件人发送的邮件,这一点体现在Postfix的配置文件要配置它认为安全的主机(mynetworks参数)。但这样会显得很麻烦,Sasl通过其它方式也可以帮助Postfix完成信任邮件的认证。

开放端口

  • 110 POP3
  • 25 SMTP
  • 143 IMAP

设置域名

  • 新增A记录mail到服务器IP
  • 新增MX记录到mail.xx.com域名

安装软件

安装软件postfix、dovecot、cyrus-sasl。

yum -y install postfix dovecot  cyrus-sasl

配置软件

配置postfix

vi /etc/postfix/main.cf

修改以下配置,注意下面的变量不要重复,如果发现与原来的变量重名,那就将原来的变量给注释掉。

#邮件服务器的主机名
myhostname = mail.xx.com
#邮件域,@后面的域名
mydomain = xx.com
#往外发邮件的邮件域
myorigin = $mydomain
#监听的网卡
inet_interfaces = all
inet_protocols = all
#服务的对象
mydestination = $myhostname,$mydomain
#邮件存放的目录
home_mailbox = Maildir/

#新添加以下配置
#--------自定义(下面可以复制粘贴到文件最后面,用于设置服务器验为主,第一行设置发送附件大小)
#message_size_limit = 100000
smtpd_sasl_auth_enable = yes //开启认证
smtpd_sasl_security_options = noanonymous //不允许匿名发信
mynetworks = 127.0.0.0/8 //允许的网段,如果增加本机所在网段就会出现允许不验证也能向外域发信
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination //允许本地域以及认证成功的发信,拒绝认证失败的发信

检查并启动postfix

postfix check  #修改保存后检查配置文件是否有错
systemctl start postfix  #开启postfix服务,CentOS6用service postfix start
systemctl enable postfix  #设置postfix服务开机启动,CentOS6用chkconfig postfix on

配置dovecot

vi /etc/dovecot/dovecot.conf

修改以下配置

protocols = imap pop3 lmtp
listen = *, ::

#新添加以下配置
#-----------自定义------------
!include conf.d/10-auth.conf

ssl = no
disable_plaintext_auth = no
mail_location = maildir:~/Maildir

启动dovecot

systemctl start dovecot    #CentOS6用service dovecot start
systemctl enable dovecot    #CentOS6用chkconfig dovecot on

配置cyrus-sasl

vi /etc/sasl2/smtpd.conf    #如果是空文件,需要自己添加

修改内容如下:

pwcheck_method: saslauthd
mech_list: plain login
log_level:3
vi /etc/sysconfig/saslauthd  #修改下面配置项(本地用户认证)

修改内容:MECH=shadow

启动cyrus-sasl

systemctl start saslauthd     #CentOS6用service saslauthd start
systemctl enable saslauthd    #CentOS6用chkconfig saslauthd on

添加邮箱账户

添加用户ciker,并将密码设为123456

useradd ciker -s /sbin/nologin
echo 123456 | passwd --stdin ciker

测试收发邮件

安装telnet

yum -y install telnet-server telnet

测试发送邮件

telnet localhost 25
#登录账户
auth login
#输入base64编码后的邮箱名,如ciker@xx.com加密后为Y2lrZXJAeHguY29t
#再次输入base64后的密码,成功后返回235 2.7.0 Authentication successful
mail from: <ciker@xx.com> //发件邮箱
rcpt to: <xx@xx.com> //收件邮箱
data //发送内容格式
354 End data with <CR><LF>.<CR><LF>
to: xx@xx.com
from: ciker@xx.com
subject: this is a test telnet smtp mail //标题
hello,world!//邮件内容

.

测试收信

telnet localhost 110
user ciker
pass 123456
list #列表查看邮件
retr 1 #读取编号为1的邮件
dele 1 #删除编号为1的邮件
quit #退出邮箱

经测试,list命令无法刷新新邮件,需要quit后重新登录才能获取新邮件。

收信结果如下:

安全起见,收完信停掉服务 :)