1. 邮件被拒收了
之前使用 mailcow 搭建了邮箱服务给我们公司使用,使用了一段时间没什么问题,直到有人发送邮件给外国客户的时候,发现在给如 outlook 邮箱发送邮件时会被拒收。
这里摘录一段拒收的回复:
<xxxxxx@outlook.com>: host
outlook-com.olc.protection.outlook.com[104.47.58.161] said: 550 5.7.1
Service unavailable, Client host [49.76.32.200] blocked using Spamhaus. To
request removal from this list see
https://www.spamhaus.org/query/ip/49.76.32.200 (AS3130).
[BN8NAM11FT006.eop-nam11.prod.protection.outlook.com
2023-09-15T06:18:18.252Z 08DBB54CBCB5BA7B] (in reply to MAIL FROM command)
大概意思就是邮件被拒收了,拒收的原因是反垃圾邮件联盟 (Spamhaus) 把公司公网 IP 封了。回复中有个网站,访问就能看到其中一条说明:宽带或者拨号上网的 IP 在黑名单中
,看来只要是家庭宽带都被封了。
我立马用 mailcow 邮箱发了一封邮件给自己的 outlook 邮箱,果然也被拒收了,和上面一样的提示。
既然家庭宽带的IP不行,那就把发到 outlook 邮箱的邮件从云服务器转发一下。
如果你的云服务器也被 Spamhaus 拉到黑名单了,那就需要去申请将云服务器的IP从禁用列表中移除,把 x.x.x.x 改为云服务器的IP并访问:https://www.spamhaus.org/query/ip/x.x.x.x
2. 安装 posteio
公司有一台4G内存的云服务器,用来穿透到公司内网提供服务的,posteio 占用的内存很少,就选它了(之前试过4G内存安装 mailcow 过段时间会宕机)。
使用 docker compose 运行 posteio
version: '3.3'
services:
posteio:
image: analogic/poste.io:2.3.14
container_name: posteio
hostname: relay.example.com
ports:
- "26:25"
- "466:465"
- "588:587"
- "6443:443"
environment:
- TZ=Asia/Shanghai
- DISABLE_CLAMAV=TRUE
- DISABLE_RSPAMD=TRUE
- DISABLE_ROUNDCUBE=TRUE
volumes:
- "./data:/data"
restart: always
networks:
default:
name: posteio
通过 https://IP:6443
访问 posteio 创建管理员账号,账号后缀不能和邮件域名一样,否则就无法转发回 mailcow 了,最好创建一个不存在的邮件域名的账号,比如 admin@xyz.com。
主机名 上面的 hostname 不能和 mailcow 的一样,如果一样在转发的时候会报如下错误。
<xxx@outlook.com>: mail for xxx:25 loops back to myself
转发IP白名单
到 System settings - Relay networks - IP/subnet
,添加一条记录 0.0.0.0/0
,表示允许所有IP通过posteio转发。上面端口映射 26 到容器 25,因为我们使用动态公网IP,在中继的IP白名单中无法使用固定的IP,这里只能不考虑安全性了,其他人也能转发,但是我们改为26端口之后,几乎没有人会使用到我们的主机进行转发了。
到此posteio就设置好了。
内存占用 posteio占用的内存较少,可以看到内存占用不到1G。
3. 设置 mailcow 转发(邮件中继)
进入 mailcow 后台,点击 System - 配置 - 路由
找到 传输规则
在上面的目标地址中添加.*\.outlook\.com
,下一跳填写 posteio 的服务器地址,用户名和密码不用填。
添加完成后可以点击 Test
进行测试,如果你的 outlook 邮箱能够收到测试邮件,则代表配置正确
最后编辑刚才创建的规则,勾选正则和启用,保存后邮件就能正常发送给 outlook 了。
配置了 outlook 的转发之后,如果对方的企业邮箱也是用的 outlook 服务,设置的 MX 记录也是 outlook 的,所以也是能够转发的。
评论区