前提&软件
固定IP服务器(VPS/独服)一台,最好是海外主机、顶级域名一个
使用到的软件:postfix dovecot opendkim squirrelmail
postfix:搭建smtp服务器,用于发送邮件
dovecot:搭建imap和pop3服务器,用于接收邮件
opendkim:生成域名的dkim,能防止垃圾邮件
squirrelmail:一款用php开发的web模板,能够通过网页收发邮件
前期准备
第一步:为主机IP配置PTR(反向域名解析),海外主机大都可以直接配置,而国内阿里云主机可以发工单修改,其他服务商暂不清楚,这也是为什么要选择海外主机的原因。
第二步:为域名配置MX记录:到域名解析提供商处配置MX记录,因为MX记录直接解析到IP地址是不符合规范的,所以应先配置一个A记录,如配置记录为mail,地址指向服务器IP,然后再新建一个MX类型记录,记录值为mail.yourdomain.com,即指向刚才配的A记录。
第三步:为域名配置一条TXT记录,即在域名解析提供商处配置一条记录类型为TXT的记录,记录内容格式为v=spf1 a mx include:mail.yourdomain.com ~all ,这条记录能够有效地防止自己的域名被垃圾邮件发送者伪造。
第四步:防火墙放行相关端口,即TCP 25(SMTP),465(SMTPS),143(IMAP),993(IMAPS)端口,POP3因为我没使用,所以暂时未配置。具体配置(iptables):
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
安装和配置postfix
postfix可以通过源码编译,也可以通过yum或者apt-get来安装,这里就介绍CentOS下通过yum安装与配置的过程。
禁用sendmail
killall sendmail
chkconfig sendmail off
yum安装
yum install -y postfix
打开主配置文件
vi /etc/postfix/main.cf
找到mydomain这一行,将#去掉,等号右侧添加自己的域名
mydomain = yourdomain.com
找到inet_interfaces这行,改为
inet_interfaces = 127.0.0.1,你的主网卡ip(通过ifconfig查看)
配置smtp认证功能(使用本地用户即shadow认证)
yum install -y cyrus-sasl-plain
编辑/etc/sysconfig/saslauthd文件,修改如下
MECH=shadow
在/etc/sasl2目录下找到smtpd.conf(若没有则创建一个)添加如下行
pwcheck_method: saslauthd
mech_list: plain login
启动saslauthd
/etc/init.d/saslauthd start
然后在/etc/postfix/main.cf中加入以下行
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = ''
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
broken_sasl_auth_clients=yes
smtpd_client_restrictions = permit_sasl_authenticated
接下来是配置SSL,即SMTPS,可根据自己需求配置。
smtpd_sasl_security_options = noanonymous
smtpd_use_tls = yes
smtpd_tls_cert_file = 你的证书存放目录,最好使用权威机构颁发的
smtpd_tls_key_file = 你的私钥存放目录 smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
在/etc/postfix/master.cf文件中添加如下行
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
安装和配置dovecot
dovecot默认的认证方式为本地用户认证方式,为了和postfix认证方式一致,这里就使用默认的认证方式。
使用yum安装
yum install -y dovecot
在/etc/dovecot/dovecot.conf第20行中去除#号,配置如下
protocols = imap pop3
编辑/etc/dovecot/conf.d/10-master.conf中的文件,取消18、21、 83、 84行的注释
inet_listener imap {
inet_listener imaps {
user = postfix
group = postfix
为dovecot配置SSL加密
vi /etc/dovecot/conf.d/10-ssl.conf
第6、12、13行取消注释,在12、13行配上SSL证书和私钥
ssl = yes
ssl_cert = <证书存放目录
ssl_key = <私钥存放目录
配置OPENDKIM
DKIM是域名密钥识别邮件标准,它可以让企业可以把加密签名插入到发送的电子邮件中,然后把该签名与域名关联起来。签名随电子邮件一起传送,而不管是沿着网络上的哪条路径传送,电子邮件收件人则可以使用签名来证实邮件确实来自该企业。
具体方法可参考:https://www.v2ex.com/t/161912
使用yum安装
yum install opendkim
mkdir -p /var/run/opendkim
chown -R opendkim:opendkim /var/run/opendkim
编辑配置文件/etc/opendkim.conf
加入配置如下:(Debian,Ubuntu主机还需要在/etc/default/opendkim里面进行额外配置)
Canonicalization relaxed/relaxed
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
LogWhy Yes
MinimumKeyBits 1024
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SigningTable refile:/etc/opendkim/SigningTable
Socket inet:8891@127.0.0.1
Syslog Yes
SyslogSuccess Yes
TemporaryDirectory /var/tmp
UMask 022
UserID opendkim:opendkim
创建你的域名对应的密钥
mkdir /etc/opendkim/keys/yourdomain.com
opendkim-genkey -D /etc/opendkim/keys/yourdomain.com/ -d yourdomain.com -s default
密钥创建完毕后,还必须保证程序启动时有足够的权限读取
chown -R opendkim:opendkim /etc/opendkim/
配置/etc/opendkim/KeyTable文件
echo "default._domainkey.yourdomain.com yourdomain.com:default:/etc/opendkim/keys/yourdomain.com/default.private" >> /etc/opendkim/KeyTable
配置/etc/opendkim/SigningTable文件
echo "*@yourdomain.com default._domainkey.yourdomain.com">>
/etc/opendkim/SigningTable
在/etc/opendkim/TrustedHosts中加入允许进行签名的主机,一般是本机,默认不需要改动,只需确保其中有127.0.0.1和::1即可。
接下来就是到域名解析提供商处配置域名DKIM记录
在/etc/opendkim/keys/yourdomain.com/目录中找到default.txt文件,这就是公钥文件
新建一个TXT类型域名记录,记录值配置为default.txt中文件从v=DKIM1到p=xxx,即括号内的文本,保存后即可。
最后将以下内容加入/etc/postfix/main.cf中即可
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = inet:127.0.0.1:8891
milter_protocol = 2
milter_default_action = accept
在启动opendkim时,还得为域名配置dmarc记录,具体步骤就是到域名解析提供商处添加一条TXT类型记录,记录值为_dmarc,记录内容为v=DMARC1;p=quarantine;rua=mailto:YourEmail。正确地配置dmarc与dkim能够降低被识别为SPAM的概率。
启动相关服务
执行以下命令以启动服务
postfix start
/etc/init.d/dovecot start
/etc/init.d/opendkim start
安装squirrelmail(可选)
前提:Nginx/Apache+PHP环境
下载页面: http://www.squirrelmail.org/download.php
下载后解压到web根目录,需要将该目录拥有者设为web服务器的运行用户,如我的配置:
chown -R www:www /home/wwwroot/squirrelmail
mkdir -p /var/local/squirrelmail
chown -R www:www /var/local/squirrelmail
切换到目录下并运行交互式脚本进行配置
cd /home/wwwroot/squirrelmail && ./configure
进入2选项,配置好DOMAIN,SMTP和IMAP服务器即可
Domain项填写你的域名
SMTP服务器填写127.0.0.1:25,Authtype配置为LOGIN
IMAP服务器填写为127.0.0.1:143
保存后即可
评论