在 Debian 上搭建邮件服务器后,“对接 API”通常有几种不同含义,需要先明确你的使用场景。下面我按最常见的几种情况给你一个清晰、可落地的说明,并给出示例。
| 目标 | 常见方案 |
|---|---|
| 用 API 发邮件 | SMTP + API 封装 / 第三方 |
| 用 API 收邮件 | IMAP / POP3 / 邮件解析 |
| 用 API 管理邮箱账号 | 虚拟邮箱 + 数据库 |
| 用 API 反垃圾 / 过滤 | Rspamd / SpamAssassin API |
| 用 API 对接业务系统 | 自己写 REST API |
最常见组合:
Postfix(MTA)
↓
Dovecot(IMAP/POP3)
↓
MariaDB / PostgreSQL(虚拟用户)
↓
Rspamd(反垃圾)
sudo apt update
sudo apt install postfix dovecot-core dovecot-imapd mailutils
from flask import Flask, request
import smtplib
from email.mime.text import MIMEText
app = Flask(__name__)
@app.route("/send", methods=["POST"])
def send_mail():
data = request.json
msg = MIMEText(data["body"])
msg["Subject"] = data["subject"]
msg["From"] = data["from"]
msg["To"] = data["to"]
with smtplib.SMTP("localhost") as server:
server.send_message(msg)
return {"status": "ok"}
app.run(host="0.0.0.0", port=5000)
调用方式:
curl -X POST http://your-server:5000/send \
-H "Content-Type: application/json" \
-d '{"from":"admin@domain.com","to":"user@domain.com","subject":"test","body":"hello"}'
✅ 适合:业务系统发邮件
sudo apt install postfix-mysql dovecot-mysql mariadb-server
数据库示例:
CREATE TABLE mailboxes (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255),
password VARCHAR(255)
);
@app.route("/mailbox", methods=["POST"])
def create_mailbox():
email = request.json["email"]
password = hash_password(request.json["password"])
db.execute(
"INSERT INTO mailboxes (email, password) VALUES (%s,%s)",
(email, password)
)
return {"status": "created"}
✅ 适合:SaaS / 多租户邮箱系统
Rspamd 自带 HTTP API:
sudo apt install rspamd
调用示例:
curl http://localhost:11334/check \
-X POST \
--data-binary @mail.eml
返回 JSON 垃圾评分、规则等。
✅ 适合:邮件安全、过滤系统
IMAP 本身是协议,不直接是 REST API,但可以封装:
import imaplib
mail = imaplib.IMAP4_SSL("localhost")
mail.login("user@domain.com", "password")
mail.select("INBOX")
✅ 适合:自动化读邮件
| 场景 | 推荐 |
|---|---|
| 内部系统发信 | Postfix + Python API |
| 多用户邮箱 | Postfix + Dovecot + MySQL |
| 高安全 | + Rspamd |
| 大规模 | 不建议自建,考虑 Postmark / SendGrid |
你只要告诉我:
我可以直接给你:
你现在是哪种场景?