001 邮件的部署
目录
一 邮件服务器搭建
前提在bash中访问一下 邮件服务商的25端口
telnet 163mx00.mxmail.netease.com 25
telnet gmail-smtp-in.l.google.com 25
测试从你的机器能不能发邮件的 ,如果不通,说明你的云厂商 禁止了tcp 25端口的出站流量,就算完成部署
也只能接收邮件,不能发送邮件,切记,切记。
2、配置DNS解析
01 -- 域名购买
02 -- 域名解析
1、解析一级域名 mmszxcdj.top
2、解析二级域名 mail.mmszxcdj.top
3、分别使用泛域名解析到二级域名 发信地址和收信地址。
MX: 防止伪装 邮件服务
TXT:

DKIM设置
DKIM是电子邮件验证标准,域名密钥识别邮件标准,主要是用来防止被判定为垃圾邮件。

使用的邮件服务是 EwoMail https://hub.docker.com/r/bestwu/ewomail/
官方网站
http://doc.ewomail.com/docs/ewomail/jianjie
或者 gophish + smtp服务
1.系统调试使用 docker容器化。
防火墙器 关
selinux 关
base eperl docker 源
2、容器的配置
docker run -d -h mail.mmszxcdj.top --restart=always \
-p 25:25 \
-p 109:109 \
-p 110:110 \
-p 143:143 \
-p 465:465 \
-p 587:587 \
-p 993:993 \
-p 995:995 \
-p 80:80 \
-p 8080:8080 \
-v `pwd`/mysql/:/ewomail/mysql/data/ \
-v `pwd`/vmail/:/ewomail/mail/ \
-v `pwd`/ssl/certs/:/etc/ssl/certs/ \
-v `pwd`/ssl/private/:/etc/ssl/private/ \
-v `pwd`/rainloop:/ewomail/www/rainloop/data \
-v `pwd`/ssl/dkim/:/ewomail/dkim/ \
--name ewomail bestwu/ewomail:latest
3配置服务端
1、后台配置
http://mail.mmszxcdj.top:8080/
后台登录页面
账户 admin
密码 ewomail123
1、配置 邮件服务器的域名 4个类型
2、添加 用户邮箱地址
2、管理配置
http://mail.mmszxcdj.top/?admin
默认用户: admin
默认密码: 12345
设置imap域名的地址 和smtp的地址 以及端口号。
点击测试,绿色表示成功。
3、用户登录
http://mail.mmszxcdj.top
普通用户登录的邮箱 用户名和密码
1 收邮件测试,随便注册个APP 即可
https://www.mail-tester.com/
测试邮件是否是垃圾邮件
2、发邮件测试
内部的用户发信正常
问题一 发信给外部邮箱 :Connection timed out
connect to outlook-com.olc.protection.outlook.com[104.47.74.33]:25: Connection timed out
很明显 服务器的出站 tcp 25端口 被拦截了,理由是防止邮件滥发。
腾讯和阿里可以提交工单申请开放。
问题2
(!)Net::Server: Can't connect to TCP port 10024 on ::1 [Cannot assign requested address]\n at line 68 in file /usr/share/perl5/vendor_perl/Net/Server/Proto/TCP.pm
有可能内网之间的邮件也不能发,要修改poxsix
docker cp ewomail:/etc/postfix/main.cf ./
vi +737 /etc/postfix/main.cf
注释 或者 删除
#content_filter = smtp-amavis:[127.0.0.1]:10024
docker cp ./main.cf ewomail:/etc/postfix/main.cf
容器内的镜像是centos6 使用下面命令重启
service postfix restart
追加 端口通,但是使用了反向代理的话
邮件发不到外网 因为收件方的spf认证会去验证你的ip和邮箱域名ip是否一致,如不一致邮件打回。
那因为有反向代理的原因所以肯定不一致呀!
但是呢 何必在乎这些细节 你不是还能自己给自己发邮件了吗? 这么好用 哪说理去。。。
解决方法是 在域名解析里的 v=spf1 ip4:127.0.0.1 -all改为
v=spf1 a:mail.baidu.com -all 可以解决该问题
mx :
SPF记录会结合“匹配机制”和“限定词”使用,它其实就是一条有特殊语法的TXT记录
匹配机制主要用于定义和指定可由该域名发送邮件的主机,其定义方式包括:
all 匹配任何主机,它写在SPF记录最后以匹配在其前面所列出的主机
ip4 匹配 IPv4 地址或网络范围
ip6 匹配 IPv6 地址或网络范围
a 匹配主机名或域名
mx 匹配域名的MX记录,当出站与入站邮件为同一服务器时通常采用此种机制
ptr 通过DNS反向记录来匹配发件人IP和域名,由于会增加DNS负载,一般不采用此种机制
exists 只检查域是否在DNS中存在
include 将发件人IP和SPF记录指向另一个域,这种匹配机制通常用于云服务,如 Exchange Online Protection
匹配机制会结合一些限定词来使用,以告诉服务器找到一条匹配记录时该怎么办。常见的限定词有:
+ 放行,如果没有明确指定限定词,则为默认值
- 硬拒绝,直接拒绝来自未经授权主机的邮件
~ 软拒绝,邮件可被接受,也可被标记为垃圾邮件
? 中性,不考虑邮件是否被接受
"v=spf1 -all" (拒绝所有,表示这个域名不会发出邮件)
"v=spf1 +all" (接受所有)
"v=spf1 ip4:192.168.0.1/16 -all"(只允许 192.168.0.1/16 范围内的IP发送邮件)
"v=spf1 mx -all"(允许当前域名的 mx 记录对应的IP地址发送邮件)
"v=spf1 mx mx:test.example.com -all"
(允许当前域名和 test.example.com 的 mx 记录对应的IP地址发送邮件)
"v=spf1 a mx ip4:173.194.72.103 -all"
(允许当前域名的 a 记录和 mx 记录和一个给定的IP地址发送邮件)
"v=spf1 include:example.com -all"(采用和 example.com 一样的SPF记录)
引用:
https://www.cnblogs.com/wkzb/p/15553178.html
https://www.cnblogs.com/wkzb/p/15401932.html
https://hub.docker.com/r/bestwu/ewomail/
添加公钥的校验
浙公网安备 33010602011771号