在 wsl 的 debian 12 中启动 smtp 服务(以 postfix 为例),请按以下步骤操作:
1. 安装 postfix
sudo apt update sudo apt install postfix mailutils
安装过程中会弹出配置窗口:
- general type of mail configuration:选择 internet site(默认)
- system mail name:输入您的域名(如 localhost 或 yourdomain.com),测试时可保留默认值。
2. 配置 postfix
编辑主配置文件:
sudo nano /etc/postfix/main.cf
确保以下关键配置:
inet_interfaces = loopback-only # 只允许本地连接 inet_protocols = ipv4 # 仅使用 ipv4(避免 wsl 兼容性问题) mydestination = $myhostname, localhost.$mydomain, localhost
保存并退出(ctrl+x → y → enter)。
3. 启动 postfix
sudo service postfix start
设置开机自启(wsl 需额外配置):
sudo nano /etc/rc.local
添加以下内容:
#!/bin/sh service postfix start exit 0
保存后赋予可执行权限:
sudo chmod +x /etc/rc.local
4. 测试 smtp 服务
方法 1:本地发送测试邮件
echo "test email body" | mail -s "test subject" your-local-username@$(hostname)
查看邮件日志:
tail -f /var/log/mail.log
读取邮件:
方法 2:使用 telnet 手动测试
sudo apt install telnet telnet localhost 25
连接后输入:
ehlo localhost
mail from: <test@localhost>
rcpt to: <your-local-username@localhost>
data
subject: test
this is a test email.
.
quit
5. 常见问题解决
端口占用:确保 25 端口空闲:
sudo ss -tulnp | grep :25
防火墙:wsl 无需额外配置防火墙。
邮件发送失败:
- 检查日志:tail -f /var/log/mail.log
- 确保配置中 inet_interfaces = loopback-only。
6. 外部邮件发送配置(可选)
若需发送到外部邮箱(如 gmail),需配置中继:
编辑 /etc/postfix/main.cf,添加:
relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_tls_cafile = /etc/ssl/certs/ca-certificates.crt smtp_use_tls = yes
创建认证文件:
sudo nano /etc/postfix/sasl_passwd
内容:
[smtp.gmail.com]:587 your-email@gmail.com:your-app-password
生成权限文件:
sudo postmap /etc/postfix/sasl_passwd sudo chmod 600 /etc/postfix/sasl_passwd*
重启 postfix:
sudo service postfix restart
说明
wsl 限制:postfix 仅在 wsl 运行时有效,关闭终端后服务停止(需通过 /etc/rc.local 实现自启)。
安全性:默认配置仅允许本地访问,暴露端口需谨慎。
其他 smtp 服务(如 exim)可类似安装,但 postfix 是 debian 默认推荐。
在 win 10 上,如何发送一个邮件给 debian 12 的 smtp 服务 ?
要从 windows 10 主机发送邮件到 wsl 中的 debian 12 smtp 服务(postfix),需要完成以下步骤:
先决条件
已按照之前说明在 wsl debian 中安装并配置 postfix
关键修改:需要让 postfix 监听 wsl 的网络接口而不仅是 loopback
步骤 1:修改 postfix 配置(在 wsl debian 中)
sudo nano /etc/postfix/main.cf
进行以下修改:
# 允许监听所有网络接口(包括 wsl 虚拟接口) inet_interfaces = all # 允许来自本地网络的客户端 mynetworks = 127.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 # 接收任意域名的邮件(测试用) mydestination = $myhostname, localhost.$mydomain, localhost
保存后重启 postfix:
sudo service postfix restart
步骤 2:获取 wsl 的 ip 地址(在 debian 中)
ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | cut -d/ -f1
示例输出:172.27.112.214(记录这个 ip)
步骤 3:在 windows 10 上发送邮件
方法 1:使用 telnet(推荐测试)
在 windows 功能中启用 telnet 客户端
win+r → optionalfeatures → 勾选 “telnet client”
打开命令提示符:
telnet 172.27.112.214 25
手动输入 smtp 命令:
ehlo windows mail from: <test@windows> rcpt to: <your_linux_username> # 使用 linux 用户名 data subject: test from windows this is a test email . # 单独一行输入点结束 quit
方法 2:使用 powershell 脚本
$smtpserver = "172.27.112.214" # 替换为你的 wsl ip $port = 25 $from = "test@windows" $to = "your_linux_username@localhost" # 替换为你的 linux 用户名 $subject = "test from powershell" $body = "this is a test email body" $message = @{ to = $to from = $from subject = $subject body = $body smtpserver = $smtpserver port = $port } send-mailmessage @message -usessl:$false
方法 3:使用 python 脚本
保存为 send_mail.py:
import smtplib smtp_server = "172.27.112.214" # 替换为你的 wsl ip port = 25 sender = "test@windows" receiver = "your_linux_username" # 替换为你的 linux 用户名 message = f"""\ subject: test from python to: {receiver} from: {sender} this is a test email from python.""" with smtplib.smtp(smtp_server, port) as server: server.sendmail(sender, receiver, message) print("email sent!")
运行:
python send_mail.py
步骤 4:在 debian 中查收邮件
# 查看邮件日志 tail -f /var/log/mail.log # 查看收到的邮件 mail
输入邮件编号查看内容,按 q 退出。
故障排除
1.连接被拒绝:
检查 postfix 是否运行:sudo service postfix status
确认监听地址:sudo ss -tuln | grep :25
临时关闭 wsl 防火墙:sudo ufw disable
2.邮件未送达:
检查接收者用户名是否正确
查看邮件队列:sudo mailq
检查日志:sudo grep 'status=sent' /var/log/mail.log
3.ip 地址变化问题:
# 在 wsl 中创建固定主机名 sudo nano /etc/hosts 127.0.0.1 wsl-host # 添加这一行
在 windows 中发送邮件到 wsl-host 代替 ip
安全说明(测试环境适用)
1.此配置开放了 smtp 端口到本地网络,仅适用于开发测试
2.生产环境需要:
- 启用 smtp 认证
- 配置 tls 加密
- 限制 mynetworks 范围
- 使用更安全的邮件服务配置
注意:wsl 的 ip 地址在每次重启后可能变化,如需固定 ip,需配置 wsl 网络或使用 dns 解析。
到此这篇关于安装debian12后linux启动smtp服务的详细指南的文章就介绍到这了,更多相关linux启动smtp服务内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论