当前位置: 首页 > news >正文

在 Win10 上 WSL 安装 Debian 12 后,Linux 如何启动 SMTP 服务?

在 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:输入您的域名(如 localhostyourdomain.com),测试时可保留默认值。

2. 配置 Postfix

编辑主配置文件:

sudo nano /etc/postfix/main.cf

确保以下关键配置:

inet_interfaces = loopback-only  # 只允许本地连接
inet_protocols = ipv4           # 仅使用 IPv4(避免 WSL 兼容性问题)
mydestination = $myhostname, localhost.$mydomain, localhost

保存并退出(Ctrl+XYEnter)。


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
    
  • 读取邮件:
    mail
    
方法 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),需配置中继:

  1. 编辑 /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
    
  2. 创建认证文件:
    sudo nano /etc/postfix/sasl_passwd
    
    内容:
    [smtp.gmail.com]:587 your-email@gmail.com:your-app-password
    
  3. 生成权限文件:
    sudo postmap /etc/postfix/sasl_passwd
    sudo chmod 600 /etc/postfix/sasl_passwd*
    
  4. 重启 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),需要完成以下步骤:

先决条件

  1. 已按照之前说明在 WSL Debian 中安装并配置 Postfix
  2. 关键修改:需要让 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(推荐测试)
  1. 在 Windows 功能中启用 Telnet 客户端
    • Win+R → optionalfeatures → 勾选 “Telnet Client”
  2. 打开命令提示符:
telnet 172.27.112.214 25
  1. 手动输入 SMTP 命令:
EHLO windows
MAIL FROM: <test@windows>
RCPT TO: <your_linux_username>  # 使用 Linux 用户名
DATA
Subject: Test from WindowsThis 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         = $ToFrom       = $FromSubject    = $SubjectBody       = $BodySmtpServer = $SmtpServerPort       = $Port
}Send-MailMessage @Message -UseSsl:$false
方法 3:使用 Python 脚本

保存为 send_mail.py

import smtplibsmtp_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 解析。

相关文章:

  • 计算机组成与体系结构:补码数制二(Complementary Number Systems)
  • SpringBoot十二、SpringBoot系列web篇之过滤器Filte详解
  • 如何在c/c++中定义和使用宏
  • 基于Springboot的宠物领养系统
  • CKA考试知识点分享(2)---ingress
  • ARM SMMUv3简介(一)
  • 主流大语言模型安全性测试(三):阿拉伯语越狱提示词下的表现与分析
  • 部门档案在不同系统中的差异及整合思路
  • FTP文件服务的搭建----详解
  • [Go]context上下文--使用要点--源码分析--Go核心--并发编程
  • IEC 61347-1:2015 灯控制装置安全通用要求详解
  • win32相关(IAT HOOK)
  • STM32什么是寄存器
  • HTML 面试题错题总结与解析
  • 锁的艺术:深入浅出讲解乐观锁与悲观锁
  • python asyncio的作用
  • 安卓基础(aar)
  • FastAPI安全机制:从OAuth2到JWT的魔法通关秘籍
  • PySide6 GUI 学习笔记——常用类及控件使用方法(单行文本控件QLineEdit)
  • 冰箱智能化升级方案:WT3000A离在线AI语音模组赋能AI在线对话功能
  • 沈阳 教育 公司 网站建设/推广类软文
  • 网址申请域名/武汉网站搜索引擎优化
  • 电商网站开发背景/下载安装百度一下
  • 网站开发检测用户微信号/推广app有哪些
  • 手机适配网站/企业seo优化服务
  • 微网站开发框架/廊坊百度快照优化