这里是普通文章模块栏目内容页
Ubuntu系统安装并配置DKIM,SPR,SMTP等服务

检查IP信用度

在自建邮件服务器之前,先检查下你所要使用的IP的信用度如何?如果你的IP已经在垃圾邮件联盟的黑名单里面,那么建议别用了,因为被当做垃圾邮件的概率会非常高。

可以点下面的链接查看:

http://cbl.abuseat.org/lookup.cgi

http://www.spamhaus.org/query/bl?ip=8.8.8.8

http://anti-spam.org.cn/

添加MX记录

比如我的域名是:quanlei.com, 我配置的邮件服务器是 mail.quanlei.com

那么你就需要在域名管理界面添加一条MX记录,key=quanlei.com, value=mail.quanlei.com

host -t mx quanlei.com

返回如下类似结果,表面MX生效:

quanlei.com mail is handled by 10 mail.quanlei.com.

安装Postfix

为了方便操作 sudo -i 拿到root权限。
输入以下命令,安装postfix:

apt-get install postfix

安装过程中,在配置界面,选择:Internet Site

下一步,在 System mail name 中填写 mail.quanlei.com

然后Postfix就安装完毕,接下来进行配置,Postfix的配置文件在:

/etc/postfix/main.cf

给邮件服务器添加域名:

mydestination = mail.quanlei.com, localhost.localdomain, localhost

安装邮件客户端进行测试:

apt-get install heirloom-mailx

测试发个邮件(coolbee2002@163.com是我的163邮件,换成你的):

echo "test" | mail coolbee2002@163.com

收到邮件后,回复一下,然后通过下面命令查看(quit命令退出):

root@localhost:/# mail
Heirloom mailx version 12.5 6/20/10.  Type ? for help.
"/var/mail/root": 1 message 1 new
>N  1 no-reply@mail.quanlei Mon Jun  4 13:05   16/645  ***
?

配置Maildir格式存储邮件,在/etc/postfix/main.cf中加入

home_mailbox = Maildir/
mailbox_command =

最后重启下Postfix:

/etc/init.d/postfix restart

ps: 发送邮件的默认端口是25,收信端口是110,两个端口需要在防火墙中开放,否则会出现发不出去,收不到的情况。

配置DKIM

通过上面的配置,发送邮件和接收邮件已经OK了,为了防止邮件被判定为垃圾邮件,可以给邮件系统增加DKIM(DomainKeys Identified Mail)功能,其主要的原理通俗的说,就是在发送邮件的时候通过私钥在邮件头写一段加密信息,然后公钥放到DNS服务器上,邮件的接收方通过邮件头的加密信息来和DNS上的公钥比对来判定邮件来源是否合法。

apt-get install opendkim

安装完成后,输入如下命令,会在当前目录下生成公钥和私钥两个文件:default.private 和 default.txt

opendkim-genkey -r -d mail.quanlei.com

default.txt 里面的内容类似如下:

default._domainkey IN TXT "v=DKIM1;=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDbJarHD2SlFuWVu3UAu//MyrHuGq+C53tJI9O2R5hdM8cknX4aH3QLzYEimcTBzKEfC+OoayJPMgPOgqQCEGPqD3o6mz1FDVxPRhDZg+5ghqmgPB4MlgQAxsoiutwuwb9k5+RtRsPonGjJyKU+cKMk7nD7gG5Y3w5Vky2n+h0wdwIDAQAB" ; ----- DKIM default for mail.quanlei.com

在你的域名管理界面,添加一条txt记录,把公钥放在域名上:
主机记录 = default._domainkey.mail.quanlei.com
记录类型 = txt

记录值中的内容,是从default.txt提取的,如下内容:

v=DKIM1;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDbJarHD2SlFuWVu3UAu//MyrHuGq+C53tJI9O2R5hdM8cknX4aH3QLzYEimcTBzKEfC+OoayJPMgPOgqQCEGPqD3o6mz1FDVxPRhDZg+5ghqmgPB4MlgQAxsoiutwuwb9k5+RtRsPonGjJyKU+cKMk7nD7gG5Y3w5Vky2n+h0wdwIDAQAB

把私钥放到想要的位置,比如/var/db/dkim/
在opendkim.conf文件中,由KeyFile参数指定上面的私钥位置,配置如下:

# Log to syslog
Syslog                  yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask                   002
# Sign for example.com with key in /etc/mail/dkim.key using
# selector '2007' (e.g. 2007._domainkey.example.com)
Domain                  mail.licaibaogao.com
KeyFile                 /var/db/dkim/default.private
Selector                default
Canonicalization        relaxed/simple
X-Header yes
Socket inet:9999@localhost

DKIM配置完成,再修改Postfix中的配置,在发信的时候启用加密功能。
在 /etc/postfix/main.cf 中加入如下内容:

smtpd_milters= inet:localhost:9999
milter_default_action = accept
milter_protocol = 2
non_smtpd_milters = inet:localhost:9999

重启opendkim和Postfix即可。

然后验证吧:http://dkimcore.org/tools/
Check a published DKIM Core Key:
Selector:default
Domain name:mail.quanlei.com

接着再发邮件到gmail和hotmail中查看dkim是否有签名。

配置SPR

除了DKIM,还可以在DNS上增加SPF配置来提高邮件发送成功的几率,添加一条txt记录:

主机记录 = mail
记录类型 = txt
记录值 = “v=spf1 ip4:8.8.8.8 ~all” (不包含引号,其中的IP换成自己的IP)

验证是否配置成功:

dig -t txt mail.quanlei.com
; QUESTION SECTION:
;mail.quanlei.com. IN TXT
;; ANSWER SECTION:
mail.quanlei.com. 300 IN TXT "v=spf1 ip4:8.8.8.8 ~all"

配置SMTP

安装必要组件:

apt-get install libsasl2 sasl2-bin libsasl2-modules

修改/etc/postfix/main.cf文件,在末尾加入以下内容:

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes

修改/etc/default/saslauthd:

START=yes
PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR} -r"
PIDFILE="${PWDIR}/saslauthd.pid"
MECHANISMS="pam"
OPTIONS="-c -m ${PWDIR}"

最后运行:

mkdir -p /var/spool/postfix/var/run/saslauthd
echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

配置PTR(反向解析)

这个需要联系IP提供商来设置反向

–EOF–

说明:本文是参考网上的配置,结合自己实际配置过程中的情况,整理的一份文档。