本文适用于:需要自建域名邮箱,用于注册平台账号、接收验证码、自动读取邮件内容的用户。无需使用 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 mail 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

🗓 测试接收

  1. 用你的 Gmail/QQ/163,给 code@example.com 发一封邮件
  2. 在服务器上查看
ls /home/code/Maildir/new
cat /home/code/Maildir/new/文件名
  1. 接收成功,表明邮箱配置已成功

🤖 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