本文适用于:需要自建域名邮箱,用于注册平台账号、接收验证码、自动读取邮件内容的用户。无需使用 Python 脚本也能纯命令行收码。
✅ 背景说明
很多平台注册账号时会要求填写邮箱地址并接收验证码。为了批量注册或控制邮箱来源,一些用户希望自建域名邮箱系统,从而:
- 自己控制域名和邮箱地址
- 本地接收邮件,免费无限用
- 配合脚本自动抽取验证码
🔧 工作环境准备
1. 需要的条件
项目 | 说明 |
---|---|
一台 VPS | Ubuntu 20.04+,需要支持 25端口(有的需要向主机商申请打开) |
一个可配置 DNS 的域名 | 如 mail.example.com |
2. 安装必要软件
apt update
apt install postfix dovecot-core dovecot-imapd -y
postfix
= SMTP 邮件服务器,用于接收邮件dovecot
= IMAP 邮箱读取服务器,允许脚本/网页读邮件
✉️ 配置 DNS 记录
到域名控制面板(如 Cloudflare、阿里云、Namecheap)添加以下 DNS 记录:
类型 | 主机记录 | 值 |
---|---|---|
A | VPS IP | |
MX | @ | mail.example.com (10) |
TXT | @ | v=spf1 mx ~all |
说明:MX 是接收邮件的域名服务器,SPF 是为了防止邮件被伪造,非必但建议配置
🔧 配置 Postfix + Dovecot
配置 Postfix
编辑 /etc/postfix/main.cf
,加入或确保:
myhostname = mail.example.com
mydestination = $myhostname, localhost.$mydomain, localhost, example.com
home_mailbox = Maildir/
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
👤 创建邮箱用户
每个 Linux 用户 = 一个邮箱地址
adduser code # 即创建 code@example.com
重启服务:
systemctl restart postfix dovecot
🗓 测试接收
- 用你的 Gmail/QQ/163,给
code@example.com
发一封邮件 - 在服务器上查看
ls /home/code/Maildir/new
cat /home/code/Maildir/new/文件名
- 接收成功,表明邮箱配置已成功
🤖 Bash 命令行接收验证码
提取最新邮件:
cd /home/code/Maildir/new
latest=$(ls -t | head -n1)
cat "$latest"
只看正文:
sed -n '/^$/,$p' "$latest"
提取6位数验证码:
sed -n '/^$/,$p' "$latest" | grep -oE '\b[0-9]{6}\b'
🌟 总结
步骤 | 内容 |
---|---|
邮箱服务器 | Postfix 接收邮件 |
邮箱读取器 | Dovecot 读取用户邮件 |
邮件格式 | Maildir 格式,如 /home/code/Maildir/new/xxx |
DNS 配置 | MX + A + SPF |
脚本抽码 | grep / sed 提取验证码 |
🚀 小结
环环相扣地走完这么一遍,你已经拥有一套全自控的邮箱系统,能够用于:
- 正常接收验证码
- 装配自动注册
- 配合脚本抽码,推送给 API
如果需要多个域名对应一台服务器,参考 virtual_mailbox_domains
📘 附录:常用 Shell 命令及参数讲解
本节整理了一些在邮件接收流程中用到的常见命令及参数说明,方便读者理解并活用。
命令 | 示例 | 说明 |
---|---|---|
ls -t |
`ls -t | head -n1` |
head -n1 |
head -n1 |
获取输出的第一行(如最新文件名) |
cat |
cat 文件名 |
查看文件全部内容,包括邮件头和正文 |
sed -n '/^$/,$p' |
sed -n '/^$/,$p' \"$latest\" |
sed -n 不自动打印;/^$/,$ 表示从空行开始到文件结尾;p 表示打印匹配的部分;用于提取邮件正文 |
grep -oE '\\b[0-9]{6}\\b' |
grep -oE '\\b[0-9]{6}\\b' |
-o 只输出匹配内容,-E 使用扩展正则;\b[0-9]{6}\b 匹配完整的 6 位数字验证码 |
adduser 用户名 |
adduser code |
创建 Linux 系统用户,对应邮箱 code@example.com |