【Linux网络配置实验】sendmail配置

准备

总体流程

服务端

  1. 创建两个用户用于测试邮件收发
  2. /etc/mail 服务端配置文件都在里
  3. 配置sendmail.mcSendmail 邮件服务器的主配置文件模板 用于生成最终的 sendmail.cf 配置文件
  4. 将配置好的sendmail.mc转换为 sendmail.cf 配置文件
  5. 配置access 定义允许通过该邮件服务器进行邮件中继的客户端 IP 或主机名。
  6. 启动 SASL认证 service saslauthd restart
  7. 启动 sendmail服务 service sendmail restart
  8. 检验 sendmailpop3两个服务是否开启

客户端

  1. 获取base64的用户与密码
  2. 发送 mail
  3. 接受 mail

创建用户

  • useradd <name> 创建用户
  • passwd <name> 设置密码

配置sendmail.mc

scss 复制代码
...
39 define(`UUCP_MAILER_MAX', `5000000')dnl
...
42 define(`confAUTH_OPTIONS', `A y')dnl
...
55 TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
56 define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
...
119 DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA,M=Ea')dnl
...
157 LOCAL_DOMAIN(`shncompany.net')dnl
  • 39:表示通过 UUCP邮件传输器 发送的邮件不能超过 5MB。
  • 42:启用SMTP 身份验证(SMTP AUTH)
  • 55:指定哪些认证机制被认为是受信任的认证
  • 56:定义服务器实际支持的 SMTP 认证机制.客户端只能从这些选项中选择一种进行认证。
  • 119:用于设置MTA的网络监听行为。监听标准 SMTP 端口,绑定到所有可用 IPv4 地址,进程标识为 MTA ,运行模式为E:启用 SMTP ESMTP 扩展,a:默认接受本地域邮件.
  • 157:指定 shncompany.net 为本地域 ,表示发送到 user@shncompany.net 的邮件会被视为"本地邮件"

M4转换

bash 复制代码
# m4 sendmail.mc > sendmail.cf

配置access

sql 复制代码
15 Connect:172.168.1.50       relay
16 Connect:tj.shncompany.net  relay
  • 表示允许 IP 地址 172.168.1.50 的客户端通过此邮件服务器转发邮件(中继)。
  • 表示允许 主机名 tj.shncompany.net 的客户端通过此邮件服务器转发邮件。

检验服务

bash 复制代码
# lsof -i:25
# losf -i:10100


获取base64的用户与密码

bash 复制代码
# echo -n "shnmail2@shncompany.net"|openssl base64
# echo -n "123"|openssl base64
  • shnmail2 : 要登录的用户名

发送 mail

bash 复制代码
# telnet mail.shncompany.net 25                        // 连接 sendmail
Trying 10.10.1.10...
Connected to mail.shncompany.net (10.10.1.10).
Escape character is '^]'.
220 yhserver ESMTP Sendmail 8.13.8/8.13.8; Thu, 19 Jun 2025 00:29:26 +0800
ehlo shncompany.net                                    // EHLO 握手
250-yhserver Hello shn.sh.shncompany.net [172.168.2.50], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-AUTH LOGIN PLAIN
250-DELIVERBY
250 HELP
auth login c2hubWFpbDJAc2huY29tcGFueS5uZXQ=           // 登录
334 UGFzc3dvcmQ6
MTIz                                                  // 密码
235 2.0.0 OK Authenticated
mail from :"testauth2"<shnmail2@shncompany.net>       // 发件人声明
250 2.1.0 "testauth2"<shnmail2@shncompany.net>... Sender ok
rcpt to :shnmail1@shncompany.net                      // 收件人声明
250 2.1.5 shnmail1@shncompany.net... Recipient ok
data                                                  // 编辑模式
354 Enter mail, end with "." on a line by itself
hello world                                           // 内容
.                                                     // 结束
250 2.0.0 55IGTQnb024672 Message accepted for delivery
quit                                                  // 退出
221 2.0.0 yhserver closing connection
Connection closed by foreign host.

接受 mail

bash 复制代码
# telnet mail.shncompany.net 10100                      // 连接POP3
Trying 10.10.1.10...
Connected to mail.shncompany.net (10.10.1.10).
Escape character is '^]'.
+OK Dovecot ready.
user shnmail1                                           // 登录
+OK
pass 123                                                // 密码
+OK Logged in.
list                                                    // 查看列表
+OK 2 messages:
1 434
2 394
.
retr 2                                                  // 阅读 第二封邮件
+OK 394 octets
Return-Path: <shnmail2@shncompany.net>
Received: from shncompany.net (shn.sh.shncompany.net [172.168.2.50])
        (authenticated bits=0)
        by yhserver (8.13.8/8.13.8) with ESMTP id 55IGTQnb024672
        for shnmail1@shncompany.net; Thu, 19 Jun 2025 00:34:09 +0800
Date: Thu, 19 Jun 2025 00:29:26 +0800
From: shnmail2@shncompany.net
Message-Id: <202506181634.55IGTQnb024672@yhserver>

hello world
.
quit                                                    // 退出
+OK Logging out.
Connection closed by foreign host.
相关推荐
csdn_aspnet3 分钟前
Linux Node.js 安装及环境配置详细教程
linux·node.js
PAQQ34 分钟前
解决 ubuntu 重启串口号变化
linux·运维·ubuntu
dyxal1 小时前
linux系统安装wps
linux·运维·wps
大家的笔记本1 小时前
jetson orin super nano(arm linux系统)上读取大恒图像工业相机(型号MER-050-560U3C)教程
linux·arm开发·相机
九章云极AladdinEdu2 小时前
深度学习优化器进化史:从SGD到AdamW的原理与选择
linux·服务器·开发语言·网络·人工智能·深度学习·gpu算力
青草地溪水旁2 小时前
Linux epoll 事件模型终极指南:深入解析 epoll_event 与事件类型
linux·epoll
..过云雨3 小时前
04.【Linux系统编程】基础开发工具2(makefile、进度条程序实现、版本控制器Git、调试器gdb/cgdb的使用)
linux·笔记·学习
zzzsde3 小时前
【Linux】初识Linux
linux·运维·服务器
渡我白衣3 小时前
Linux网络:应用层协议http
linux·网络·http
pofenx3 小时前
使用nps创建隧道,进行内网穿透
linux·网络·内网穿透·nps