Debian上Postfix搭建一个 SMTP 服务器
要在 Debian 上搭建一个 SMTP 服务器并使用 smtp.owen.com
作为域名,可以按照以下步骤操作:
1. 安装 Postfix
Postfix 是一个流行的邮件传输代理(MTA),可以用于发送和接收电子邮件。
sudo apt update
sudo apt install postfix
在安装过程中,选择 “Internet Site” 选项并输入您的服务器的主机名(可以使用 smtp.owen.com
)。
2. 配置 Postfix
编辑 Postfix 配置文件来设置域名和基本参数。
sudo nano /etc/postfix/main.cf
确保以下配置存在并正确设置:
myhostname = smtp.owen.com
mydomain = owen.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relayhost =
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/
3. 配置 SSL/TLS 加密(可选,但强烈推荐)
如果你想使用加密的连接(推荐),需要为 Postfix 配置 SSL/TLS。首先,安装 postfix
的 SSL 支持:
sudo apt install postfix-cdb postfix-doc
生成 SSL 证书(如果你没有证书,可以使用 Let’s Encrypt):
sudo mkdir /etc/ssl/certs
sudo mkdir /etc/ssl/private
# 生成自签名证书(仅用于测试,生产环境推荐使用 Let's Encrypt 或其他 CA 证书)
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/smtpd.key -out /etc/ssl/certs/smtpd.crt
然后,配置 Postfix 使用这些证书:
sudo vim /etc/postfix/main.cf
确保以下设置已启用:
smtpd_tls_wrappermode = yes
smtpd_tls_auth_only = yes
smtpd_use_tls = yes
smtpd_tls_key_file = /etc/ssl/private/smtpd.key
smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt
smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtpd_tls_security_level = may
smtpd.key对应private.pem smtpd.crt对应fullchain.crt ca-certificates.crt对应certificate.crt
4. 配置 SPF、DKIM 和 DMARC(确保邮件不被标记为垃圾邮件)
为了确保您的邮件不被当作垃圾邮件处理,您应该配置 SPF、DKIM 和 DMARC 记录。 在 Postfix 安装和配置过程中,SPF、DKIM 和 DMARC 记录通常不会在 Postfix 的配置界面中设置。它们是需要在您的 DNS 配置中手动添加的。
以下是如何在 DNS 配置中添加这些记录的步骤:
1. 添加 SPF 记录
SPF(Sender Policy Framework) 记录用来指定哪些服务器可以为您的域发送电子邮件。这有助于防止垃圾邮件和伪造邮件。
-
SPF 记录格式:
v=spf1 mx ~all
解释:
v=spf1
:表示 SPF 记录的版本。mx
:允许从您的域的 MX 服务器发送邮件。~all
:表示“软失败”,即如果邮件来自没有在 SPF 记录中列出的服务器,则将其标记为可疑邮件。
-
添加 SPF 记录:
- 登录到您的域名提供商的 DNS 管理面板。
- 找到 DNS 配置 或 DNS 设置 部分。
- 添加一个 TXT 记录,记录的名称为
@
或留空(通常表示根域),值为上面的 SPF 记录:
@ IN TXT "v=spf1 mx ~all"
2. 添加 DKIM 记录
DKIM(DomainKeys Identified Mail) 记录用于加密邮件的签名,确保邮件内容未被篡改。
-
安装并配置 DKIM(Postfix 上使用 OpenDKIM):
- 您需要安装并配置 DKIM 服务(如
opendkim
)来生成 DKIM 密钥对,然后将公钥发布到 DNS 中。
- 您需要安装并配置 DKIM 服务(如
-
生成 DKIM 密钥: 使用
opendkim-genkey
命令生成 DKIM 密钥。假设您要为域owen.com
生成密钥:sudo mkdir -p /etc/opendkim/keys/owen cd /etc/opendkim/keys/owen sudo opendkim-genkey -s default -d owen.com
这会生成两个文件:
default.private
(私钥)default.txt
(包含公钥的 DNS 记录)
-
将公钥添加到 DNS: 打开
default.txt
文件,它会包含类似以下内容:default._domainkey IN TXT ("v=DKIM1; k=rsa; p=MIIBIjANBgkqh...")
复制并将该内容作为 TXT 记录添加到您的 DNS 配置中,记录名称通常为
default._domainkey
。- 记录名称:
default._domainkey
- 记录类型:TXT
- 记录值:
v=DKIM1; k=rsa; p=MIIBIjAN...
- 记录名称:
-
配置 Postfix 使用 DKIM: 安装并配置
opendkim
,让它与 Postfix 配合工作,确保您的邮件被签名。
3. 添加 DMARC 记录
DMARC(Domain-based Message Authentication, Reporting & Conformance) 记录定义了域的邮件处理策略,以防止垃圾邮件和邮件伪造。
-
DMARC 记录格式:
v=DMARC1; p=none; rua=mailto:dmarc-reports@owen.com; ruf=mailto:dmarc-reports@owen.com; sp=none; aspf=r;
解释:
v=DMARC1
:表示 DMARC 记录的版本。p=none
:表示没有执行任何具体的邮件处理策略,只是监控。rua
:邮件报告发送到的邮箱地址。ruf
:失败报告发送到的邮箱地址。sp=none
:为子域设置相同的策略。aspf=r
:表示宽松的对齐模式。
-
添加 DMARC 记录:
- 登录到您的 DNS 提供商的控制面板。
- 找到 DNS 设置。
- 添加一个新的 TXT 记录,记录的名称为
_dmarc
,值为上述的 DMARC 记录:
_dmarc.owen.com IN TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@owen.com; ruf=mailto:dmarc-reports@owen.com; sp=none; aspf=r;"
4. 验证记录是否生效
配置好 SPF、DKIM 和 DMARC 记录后,您可以使用以下工具验证它们是否正确设置:
- SPF:https://mxtoolbox.com/spf.aspx
- DKIM:https://mxtoolbox.com/dkim.aspx
- DMARC:https://mxtoolbox.com/dmarc.aspx
通过这些工具,您可以检查您的 DNS 记录是否已成功添加并生效。
5. 配置防火墙
确保您的服务器的防火墙允许 SMTP 流量,尤其是端口 25、465 和 587:
sudo ufw allow 25,465,587/tcp
6. 重启 Postfix 服务
完成配置后,重启 Postfix 服务使更改生效:
sudo systemctl enable postfix
sudo systemctl status postfix
sudo systemctl start postfix
sudo systemctl restart postfix
sudo systemctl stop postfix
7. 配置客户端
在邮件客户端(如 Outlook、Thunderbird 等)中配置 SMTP 服务器,使用以下设置:
- SMTP 服务器:
smtp.owen.com
- 端口:25(未加密)、465(SSL 推荐)、587(TLS)
- 认证方式:登录
- 用户名:邮箱地址(如
test@owen.com
) - 密码:邮箱密码
添加用户test
sudo adduser test
```bash
然后输入密码
确认密码就可以了
### 8. 测试 SMTP 服务器
可以使用 `telnet` 或 `nc` 命令来测试 SMTP 服务器是否正常工作:
```bash
telnet smtp.owen.com 25
成功连接到 smtp.owen.com
的 25 端口,表示您的 SMTP 服务器已经启动并正常运行。现在您可以使用 telnet
与 SMTP 服务器进行通信,测试发送邮件等功能。
- HELO:向服务器问候,并确定您的身份。
HELO smtp.owen.com
服务器应该返回类似以下内容:
250 smtp.owen.com
- MAIL FROM:指定发送邮件的发件人地址。
MAIL FROM:
如果成功,服务器会返回:
250 2.1.0 Ok
- RCPT TO:指定收件人的地址。
RCPT TO:
如果成功,服务器会返回:
250 2.1.5 Ok
- DATA:表示开始输入邮件内容。
DATA
服务器应该返回:
354 End data with .
- 输入邮件内容:可以输入简单的邮件内容,例如:
Subject: Test Email
This is a test email from smtp.owen.com.
.
邮件内容输入完成后,使用一个 句点 (.
) 来结束邮件内容。服务器应该返回:
250 2.0.0 Ok: queued as ...
- QUIT:关闭连接。
QUIT
服务器会返回:
221 2.0.0 Bye