在 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 解析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/86412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树莓派超全系列教程文档--(59)树莓派摄像头rpicam-apps

这里写目录标题 rpicam-apps libcamera 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 rpicam-apps 树莓派操作系统 Bookworm 将相机捕捉应用程序从 libcamera-\* 重命名为 rpicam-*。符号链接允许用户暂时使用旧名称。尽快采用新的应用程序名称…

【数据结构】图论最短路径算法深度解析:从BFS基础到全算法综述​

最短路径 导读一、最短路径1.1 单源最短路径1.2 各顶点间的最短路径1.3 最短路径算法 二、BFS算法结语内容回顾下一篇预告&#xff1a;挑战带权最短路径&#xff01; 导读 大家好&#xff0c;很高兴又和大家见面啦&#xff01;&#xff01;&#xff01; 欢迎继续探索图算法的…

中国政务数据安全建设细化及市场需求分析

(基于新《政务数据共享条例》及相关法规) 一、引言 近年来,中国政府高度重视数字政府建设和数据要素市场化配置改革。《政务数据共享条例》(以下简称“《共享条例》”)的发布,与《中华人民共和国数据安全法》(以下简称“《数据安全法》”)、《中华人民共和国个人信息…

Linux信号保存与处理机制详解

Linux信号的保存与处理涉及多个关键机制&#xff0c;以下是详细的总结&#xff1a; 1. 信号的保存 进程描述符&#xff08;task_struct&#xff09;&#xff1a;每个进程的PCB中包含信号相关信息。 pending信号集&#xff1a;记录已到达但未处理的信号&#xff08;未决信号&a…

【Redis】笔记|第10节|京东HotKey实现多级缓存架构

缓存架构 京东HotKey架构 代码结构 代码详情 功能点&#xff1a;&#xff08;如代码有错误&#xff0c;欢迎讨论纠正&#xff09; 多级缓存&#xff0c;先查HotKey缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新…

php apache构建 Web 服务器

虚拟机配置流程winsever2016配置Apache、Mysql、php_windows server 2016配置web服务器-CSDN博客 PHP 和 Apache 通过 ​​模块化协作​​ 共同构建 Web 服务器&#xff0c;以下是它们的交互机制和工作流程&#xff1a; ​​一、核心组件分工​​ 组件角色​​Apache​​Web …

二分查找排序讲解

一、二分查找&#xff08;Binary Search&#xff09; 核心思想&#xff1a; 前提&#xff1a;数组必须是 有序的&#xff08;比如从小到大排列&#xff09;。目标&#xff1a;在数组中快速找到某个数&#xff08;比如找 7&#xff09;。方法&#xff1a;每次排除一半的数&…

【Redis实战:缓存与消息队列的应用】

在现代互联网开发中&#xff0c;Redis 作为一款高性能的内存数据库&#xff0c;广泛应用于缓存和消息队列等场景。本文将深入探讨 Redis 在这两个领域的应用&#xff0c;并通过代码示例比较两个流行的框架&#xff08;Redis 和 RabbitMQ&#xff09;的特点与适用场景&#xff0…

[拓扑优化] 1.概述

常见的拓扑优化方法有&#xff1a;均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有&#xff1a;有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…

【openssl】升级为3.3.1,避免安全漏洞

本文档旨在形成 对Linux系统openssl版本进行升级 的搭建标准操作过程&#xff0c;搭建完成后&#xff0c;实现 openssl 达到3.3以上版本&#xff0c;避免安全漏洞 效果。 一、查看当前版本 版本不高于3.1的&#xff0c;均需要升级。 # 服务器上运行以下命令&#xff0c;查看…

基于正点原子阿波罗F429开发板的LWIP应用(6)——SNTP功能和lwiperf测速

说在开头 正点原子F429开发板主芯片采用的是STM32F429IGT6&#xff0c;网络PHY芯片采用的是LAN8720A(V1)和YT8512C(V2)&#xff0c;采用的是RMII连接&#xff0c;PHY_ADDR为0&#xff1b;在代码中将会对不同的芯片做出适配。 CubeMX版本&#xff1a;6.6.1&#xff1b; F4芯片组…

C:\Users\中文名修改为英文名

C:\Users\中文名修改为英文名 背景操作步骤 背景 买了台新电脑&#xff0c;初始化好不知道啥操作把自己的登录用户名改成了中文&#xff0c;有些安装的软件看见有中文直接就水土不服了。 操作步骤 以下称中文用户名为张三。 正常登录张三用户 进入用户管理页面修改用户名&a…

YOLOv12环境配置,手把手教你使用YOLOv12训练自己的数据集和推理(附YOLOv12网络结构图),全文最详细教程

文章目录 前言一、YOLOv12代码下载地址1.YOLOv12模型结构图 二、YOLO环境配置教程1.创建虚拟环境2.激活虚拟环境3.查询自己电脑可支持最高cuda版本是多少&#xff08;无显卡的同学可以跳过这个步骤&#xff09;4.pytorch安装5.验证 PyTorch GPU 是否可用&#xff08;没有显卡的…

ES6(ES2015)特性全解析

ES6&#xff08;ECMAScript 2015&#xff09;是 JavaScript 语言发展史上的一个重要里程碑&#xff0c;它引入了许多新的语法特性和功能&#xff0c;提升了代码的可读性、可维护性和开发效率。 1. 块级作用域变量&#xff1a;let 和 const ES6 引入了 let 和 const 关键字&am…

jvm 垃圾收集算法 详解

垃圾收集算法 分代收集理论 垃圾收集器的理论基础&#xff0c;它建立在两个分代假说之上&#xff1a; 弱分代假说&#xff1a;绝大多数对象都是朝生夕灭的。强分代假说&#xff1a;熬过越多次垃圾收集过程的对象就越难以消亡。 这两个分代假说共同奠定了多款常用的垃圾收集…

数字孪生+AR/VR的融合创新

目录 引言&#xff1a;工业元宇宙的兴起与技术基石数字孪生&#xff1a;工业元宇宙的数字底座 2.1 数字孪生的概念与关键要素 2.2 数字孪生在工业领域的应用 2.3 数字孪生的技术架构 (Mermaid Graph) AR/VR&#xff1a;工业元宇宙的沉浸式体验层 3.1 AR/VR 的概念与技术原理…

图解C#教程 第五版 第4章 类型、存储和变量 笔记

第4章 类型、存储和变量 笔记 4.1 C# 程序是一组类型声明 C程序是一组函数和数据类型&#xff0c;C程序是一组函数和类&#xff0c; 而C#程序是一组类型声明&#xff0c;具有如下特征&#xff1a; C# 程序或 DLL 的源代码是一组类型声明类型声明中必须有一个包含 Main 方法…

SpringBoot整合SSM

1. SSM整合步骤 今天带大家学习一下基于SpringBoot的SSM整合案例&#xff0c;话不多说&#xff0c;咱们开始&#xff0c;要实现SSM整合&#xff0c;有以下这么几步 导入依赖创建yml配置文件dao层静态页面测试类进行测试 1.1 导入依赖 <?xml version"1.0" enco…

多面体模型-学习笔记2

1&#xff09; 多面体模型被应用于解决程序变换问题&#xff0c;并有效地推动了程 序自动并行化等技术的发展。与传统的解决程序变换的方法相比&#xff0c;多面体模型 具有许多优势[5]。多面体模型提供了一种强大的抽象&#xff0c;将每个语句的动态语句执 行实例视作一个多面…

基于django+vue的健身房管理系统-vue

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat12开发软件&#xff1a;PyCharm 系统展示 会员信息管理 员工信息管理 会员卡类型管理 健身项目管理 会员卡管理 摘要 健身房管理…