Zavier's Blog

使用postfix+dovecot+opendkim+squirrelmail搭建满分的邮件服务器

前提&软件


固定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

保存后即可


该文章为本站原创,转载请注明来源,本文永久链接:https://zavierlab.com/post/60.html

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright © 2017-2019 Zavier的博客.网站地图