[关闭]
@dooy 2022-11-01T07:34:50.000000Z 字数 5452 阅读 394

CentOS下 POP3 SMTP sasl Sendmail auth认证的安装

安装


本文以架设 test@zahei.com 邮箱为例,环境为CentOS 6.x。 CentOS7.6 测试过

特别注意:docker就没成功过,花了2天时间

一、准备工作

1.1 查询zahei.com的MX解析

  1. nslookup
  2. set q=mx
  3. zahei.com
  4. #得到信息
  5. zahei.com MX preference = 20, mail exchanger = mail.zahei.com
  6. zahei.com MX preference = 10, mail exchanger = mail2.zahei.com
  7. #注意mx 一定要域名,如果是ip 会导致苹果的 appleid 收不到

1.2 配置hostname

配置hostname 为 zahei.com

  1. #在服务端涉及到的文件跟命令
  2. vim /etc/hosts
  3. vim /etc/sysconfig/network
  4. hostname zahei.com
  5. /etc/init.d/sendmail restart
  6. #在客户端
  7. telnet 117.79.157.247 25 #后能显示说明ok
  8. 220 zahei.com ESMTP Sendmail *********** #这里出现zahei.com

1.3 添加账号

  1. useradd all
  2. passwd all #设置一个密码 比如为 passwd-abc

二、安装软件

  1. yum -y install sendmail*
  2. yum -y install dovecot*
  3. yum -y install cyrus-sasl*

三、配置文件

3.1 配置sendmail

  1. vim /etc/mail/sendmail.mc
  2. #将原来的ip 127.0.0.1 修改为 0.0.0.0
  3. DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
  4. #把认证打开,把前面的dnl去掉就好
  5. TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
  6. define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
  7. #保存后
  8. m4 /etc/mail/sendmail.mc >/etc/mail/sendmail.cf
  9. #添加你的域名
  10. vim /etc/mail/locl=host-names
  11. #添加 zahei.com 如果有多个域名 就每行一个

尔后,你可以配置 /etc/mail/access,这个文件是让你无需要认证就可以随意发邮件 有些不安全(可配可不配)

3.2配置POP3

  1. vim /etc/dovecot/dovecot.conf
  2. # 去掉前面的#号
  3. protocol= imap imaps pop3 pop3s
  4. # 高版本如果
  5. #出现 ERP ERR Plaintext authentication disallowed on non-secure
  6. #添加下面内容
  7. disable_plaintext_auth=no
  8. vim /etc/dovecot/conf.d/10-mail.conf
  9. #找到
  10. # mail_location = mbox:~/mail:INBOX=/var/mail/%u
  11. #修改去掉前面的#号就可以了
  12. mail_location = mbox:~/mail:INBOX=/var/mail/%u
  13. #修改后 保存退出

出现 ERR Plaintext authentication disallowed on non-secure (SSL/TLS)

  1. vi /etc/dovecot/conf.d/10-auth.conf
  2. disable_plaintext_auth = no
  3. vi /etc/dovecot/conf.d/10-ssl.conf
  4. ssl = no
  5. service dovecot restart

3.3 配置映射关系(如果有需要)

能解决你任意一个邮件都是发送到你指定的邮箱 学名叫 “虚拟域邮件映射”

  1. vim /etc/mail/virtusertable
  2. @zahei.com all
  3. #这样能发送到 test@zahei.com 都会发送到 all@zahei.com 里面

3.4 重启服务

  1. /etc/init.d/sendmail start
  2. /etc/init.d/dovecot start
  3. /etc/init.d/saslauthd start

四、测试

测试之前得确认 110、25端口是否打开
检查INBOX目录是否存在?如果没有手工下

  1. mkdir /home/all/mail/.imap/INBOX

4.1 手工测试

  1. telnet 你的ip 25
  2. ehlo zahei.com
  3. 250- Hello [192.168.1.11], pleased to meet you
  4. 250-ENHANCEDSTATUSCODES
  5. 250-PIPELINING
  6. 250-8BITMIME
  7. 250-SIZE
  8. 250-DSN
  9. 250-ETRN
  10. 250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
  11. 250-DELIVERBY
  12. 250 HELP
  13. #出现 AUTH LOGIN PLAIN 就说明认证成功

详细的测试可以查看SMTP协议

4.2 foxmail测试

账号: all@zahei.com
密码: passwd-abc
pop3: mail.zahei.com 110
smtp: mail.zahei.com 25

五、过滤、反垃圾服务

要求只收 qq.com 跟apple.com的邮件 其他全部拒绝

  1. vim /etc/mail/access
  2. #添加下面内容
  3. From:org REJECT
  4. From:net REJECT
  5. From:cn REJECT
  6. From:edu REJECT
  7. From:gov REJECT
  8. From:com REJECT
  9. From:qq.com OK
  10. From:apple.com OK
  11. From:zahei.com OK
  12. ## 注意由于不知道 控制权限的通配符 只能穷举 com org net cn gov edu
  13. makemap -v hash /etc/mail/access.db < /etc/mail/access
  14. /etc/init.d/sendmail restart

六、注意与参考


  1. 之前一直使用AUTH LOGIN 但是后面有个出现 老师认知失败 检查了很久 才知道是 saslauthd没有启动
  2. 手工测试一遍都不输入密码,这个时候你的检查你的ip是否在/etc/mail/access 里面否?auth认证 你ip可以不在里面但必须能访问25端口
  3. mx的设置要为域名,不然后果可能产生有些邮件收不到
  4. 如果用foxmail测试 提示 关于“INBOX” 的错误需要在 手动建立INBOX目录 mkdir /home/用户名/mail/.imap/INBOX
  5. 参考

    http://wenku.baidu.com/view/06183d01b52acfc789ebc9e4.html

    解决列入黑名单问题:
    http://bbs.chinaunix.net/thread-3565820-1-1.html

    dovecot 配置日志等问题 可结合mysql
    http://inosin.iteye.com/blog/1472653

    关于 access权限的设置
    http://qingwang.blog.51cto.com/505009/909329/

安装DKIM 提高送达率

我们这里考虑用 opendkim 也可以使用 amavisd 来做

1.安装 opendkim

  1. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  2. wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
  3. rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
  4. yum install opendkim

2.配置 opendkim

  1. ##生成key
  2. export domain=zahei.com
  3. mkdir /etc/opendkim/keys/$domain
  4. cd /etc/opendkim/keys/$domain
  5. opendkim-genkey -d $domain -s default
  6. chown -R opendkim:opendkim /etc/opendkim/keys/$domain
  7. echo "default._domainkey.$domain $domain:default:/etc/opendkim/keys/$domain/default.private" >> /etc/opendkim/KeyTable
  8. echo "*@$domain default._domainkey.$domain" >> /etc/opendkim/SigningTable
  9. ##生成之后打开/etc/opendkim/keys/domain.com/default.txt,里面就是DKIM key,需要添加到DNS,主机记录为default._domainkey,记录值为括号里面的(去掉引号)
  10. #检验
  11. host -t txt default._domainkey.zahei.com
  12. #显示 default._domainkey.zahei.com descriptive text "v=DKIM1\; k=rsa\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAvYIDHGsfFtuK/rSOZ2FTfiujbQjd3brq5i9p1DjTVaNj45pP+c0kV7FlRF67//kLJhI+PlWSWW36+dUHMxdXDiqykBY3rVhJVD8JUpVGKbK22ILVIHPnvxV4WBEKdPSw1ZW4MDHp/HWJlFwUiUQa+ujip4BS/jxJP6OsImBbzQIDAQAB"

配置opendkim.conf
vi /etc/opendkim.conf
1. 将Mode 改为 Mode sv
2. 将Domain 改为 Domain zahei.com
3. 将KeyTable变量前面的#去掉,但是KeyFile、Statistics加上#
4. 再把SigningTable /etc/opendkim/SigningTable改成SigningTable refile:/etc/opendkim/SigningTable
5. 检查 host里面有 127.0.0.1 zahei.com ?

3.修改相应sendmail的配置

  1. #在/etc/mail/sendmail.mc 添加
  2. INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')dnl
  3. #保存后编译
  4. m4 /etc/mail/sendmail.mc >/etc/mail/sendmail.cf
  5. #保存后重启
  6. /etc/init.d/sendmail restart
  7. /etc/init.d/opendkim start

如果发生 dkim_eoh(): resource unavailable: can't create temporary file at /tmp/dkim.***: Permission denied 错误 应该系统没有设置 setenforce 0

4.检验

给 qq邮箱发一份邮件看看 投机里面是否还有 DKIM-Signature:

  1. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zahei.com;
  2. s=default; t=1470979570;
  3. bh=iyATQ7btGBDoXyz5qhAEwPhoj7jn7SvdtRNJoYYDX+w=;
  4. h=Date:From:To:Subject:From;
  5. b=ucTfO8JuO3+UQlbFAd9yHEXMOwbVaA9fujRm+RrWTkA5gZmla46g2Cas9KkFZHXxd
  6. M4zXJ4FeHh7FSud5Pm/vk2pyC1LIYeS3SpTjEKvXTavXmQvAdmZxriaWNIgNcfHwTK
  7. ehKCOGjbWm+3JE0MfNp0NCBR/fowmoftVbKbKuZ0=

往 check-auth@verifier.port25.com 发送验证

  1. Summary of Results
  2. ==========================================================
  3. SPF check: temperror
  4. DomainKeys check: neutral
  5. DKIM check: pass
  6. Sender-ID check: pass
  7. SpamAssassin check: ham

5.参考

http://www.51itstudy.com/62459.html
http://www.opendkim.org/opendkim-README

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注