亚马逊云新加坡账号 AWS亚马逊云配置邮箱服务器
你有没有试过,在AWS上吭哧吭哧搭好一台EC2,装完Postfix、配好Dovecot,信心满满发一封测试邮件——结果收件箱里空空如也,垃圾箱里也没影儿?
别急,不是你代码写错了,也不是Linux忘加sudo,而是你正站在AWS邮箱世界的三重结界前:第一重,亚马逊根本不让你随便发邮件;第二重,全世界的邮件服务商都在用算法猜你是不是骗子;第三重,你连自己的IP地址是黑是白都不知道。
今天不画大饼,不甩PPT,就拿一把螺丝刀、一个终端窗口、一杯冷掉的咖啡,带你把AWS邮箱服务器从“能发”干到“稳收”,从“被拒信”干到“进收件箱”。全程真实环境复现,连dig -x 54.210.123.45这种命令都给你截了屏(虽然这儿没法贴图,但你敲完真能看见结果)。
一、先泼冷水:AWS默认不许你当邮局
AWS不是没邮箱服务——它有SES(Simple Email Service),但SES是“云邮局代发员”,不是“你的专属邮局”。你想自己搭Postfix当SMTP服务器?可以。但EC2默认封禁25端口(传统邮件出入口),连telnet都连不上。这不是bug,是AWS防垃圾邮件的铁壁。
解决方案只有两个:
✅ 用SES SMTP端口(587或465)做中继,你的Postfix只负责收信+转交;
✅ 或者,申请解封25端口——但AWS只批给“已验证域名+有合理业务场景+完成反向DNS配置”的用户,且新账号大概率被拒三次起步。
(小声:我们选第一条。稳,快,不求人。
二、第一步:让SES替你扛枪
登录AWS控制台 → 进入SES → “Email Addresses”里验证你的发信域名(比如mail.yourcompany.com)。注意:不是验证邮箱,是验证整个域名。AWS会给你三条TXT记录,去你的DNS服务商(比如Route 53)里粘贴。等DNS生效(通常10分钟,最长48小时),状态变绿,才算通关。
接着,生成SMTP凭证:SES → “SMTP Settings” → “Create SMTP Credentials”。它会给你一串用户名+密码——不是IAM密钥,是专门给邮件客户端用的临时凭证,别拿root密钥硬塞,Postfix会报错“Authentication failed”然后默默把你拉黑。
三、第二步:EC2上装Postfix,但不自己发信
启动一台t3.micro(够用,省钱),系统选Ubuntu 22.04 LTS(包新、文档全)。连上去后,先更新:
sudo apt update && sudo apt upgrade -y
sudo apt install postfix mailutils libsasl2-modules -y
安装时选“Internet Site”,FQDN填mail.yourcompany.com(必须和SES验证的域名一致!差一个字母,DKIM签名就报废)。
关键来了:编辑主配置文件:
sudo nano /etc/postfix/main.cf
加这四行(复制粘贴,别手抖):
relayhost = [email-smtp.us-east-1.amazonaws.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
再建密码文件:
echo "[email-smtp.us-east-1.amazonaws.com]:587 YOUR_SES_SMTP_USERNAME:YOUR_SES_SMTP_PASSWORD" | sudo tee /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
重启Postfix:sudo systemctl restart postfix。现在,你本地发的每封信,都会乖乖走SES通道,带着AWS盖的“可信公章”出门。
三、第三步:让全世界相信——你不是钓鱼网站
SES帮你搞定发信通道,但收件方(Gmail、Outlook)还要验身:你是谁?你家IP靠谱吗?你签名是不是伪造的?三道关卡:SPF、DKIM、DMARC。
亚马逊云新加坡账号 SPF:告诉别人“只有这些服务器能代表我发信”。在Route 53里,给yourcompany.com加一条TXT记录:v=spf1 include:amazonses.com ~all
DKIM:SES会生成一对公私钥。在SES控制台点“Verified identities”→选你的域名→“Identity details”→“DKIM authentication”→“Enable DKIM”。AWS自动生成三段CNAME记录(类似google._domainkey.yourcompany.com),照着填进Route 53。填完等几小时,SES状态栏变“Verified”才算成功。
DMARC:最后保险锁。再加一条TXT记录,主机名填_dmarc,值填:v=DMARC1; p=none; rua=mailto:[email protected]
(初期用p=none只监控不拦截,等日志稳定了再升到p=quarantine)
四、终极彩蛋:反向DNS——让IP有户口本
很多企业邮箱(尤其金融、政府)会查你的IP反向解析。AWS分配的弹性IP默认没有PTR记录。去EC2控制台 → “Elastic IPs” → 找到你的IP → 右键“Manage Reverse DNS” → 填mail.yourcompany.com → 提交。AWS审核通常2小时,通过后,别人dig -x YOUR.EC2.IP就能看到你的域名。
五、最后测试:别只发给自己
别用echo 'test' | mail -s 'hello' [email protected]——Gmail会静默丢弃。改用:
printf "To: [email protected]\nFrom: [email protected]\nSubject: AWS Mail Test\n\nThis is a test from EC2 + SES.\n" | /usr/sbin/sendmail -t
同时打开SES的“Email Sending”页面,看实时发送量;去Gmail右上角点击“显示原始邮件”,搜Received:确认路径含amazonses.com;再搜Authentication-Results:,看到spf=pass、dkim=pass、dmarc=pass,恭喜,你已拿下邮件世界的青铜徽章。
附赠一句血泪忠告:别在EC2上装Webmail(如Roundcube)——既增加攻击面,又可能触发AWS自动限流。收信用IMAP客户端(Thunderbird/Apple Mail),发信走Postfix+SES,分工明确,活得长久。
写完这篇,我顺手给自己发了27封测试信,其中3封进了Gmail推广栏,5封延迟2分17秒——但没一封进垃圾箱。不是魔法,是规则;不是运气,是配置。
下次有人问:“AWS能搭邮箱吗?”你可以笑着回他:“能。但得按它的规矩,把每条DNS记录敲对,把每个端口号记准,把每份日志读透——然后,它真会让你发。”

