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配置服务端

image-20230407171949767

1、后台配置

http://mail.mmszxcdj.top:8080/
后台登录页面
账户  admin
密码 ewomail123

1、配置 邮件服务器的域名  4个类型
2、添加 用户邮箱地址
image-20230407172330329

2、管理配置

http://mail.mmszxcdj.top/?admin
默认用户: admin
默认密码: 12345

设置imap域名的地址 和smtp的地址 以及端口号。

点击测试,绿色表示成功。
image-20230408201411718

3、用户登录

http://mail.mmszxcdj.top

普通用户登录的邮箱 用户名和密码
image-20230408201819496 image-20230408202036913

1 收邮件测试,随便注册个APP 即可

https://www.mail-tester.com/
测试邮件是否是垃圾邮件

2、发邮件测试

内部的用户发信正常
image-20230408205933483
问题一 发信给外部邮箱 :Connection timed out
connect to outlook-com.olc.protection.outlook.com[104.47.74.33]:25: Connection timed  out

很明显 服务器的出站 tcp 25端口 被拦截了,理由是防止邮件滥发。

腾讯和阿里可以提交工单申请开放。
image-20230408204217653

问题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/

添加公钥的校验
posted @ 2023-04-08 22:25  mmszxc  阅读(176)  评论(0)    收藏  举报