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

准备

总体流程

服务端

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

客户端

  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.
相关推荐
Ruiery6 小时前
Linux 6.6内核内存管理深度解析(十六):mmap — 用户态“申请内存“的真相
linux·运维·服务器
欧米欧6 小时前
Linux系统篇(七),环境变量的底层溯源,核心获取机制与安全应用
linux·运维·服务器
Ruiery6 小时前
Linux 6.6内核内存管理深度解析(十八):KASLR 内核地址空间随机化
linux·运维·服务器·安全
qetfw7 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
逆风的蚂蚁8 小时前
linux服务器性能调整怎么落地?我把 CPU 调度、I/O 优先级和内核参数这几个旋钮都拧了一遍
linux·运维·服务器
沫璃染墨12 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
AI_Lab0114 小时前
宝塔用了两年,有没有必要换成轻量方案?
linux·运维·服务器
by2099914 小时前
Linux GDB 调试与 CGDB 使用
linux·运维·服务器·经验分享
星恒随风14 小时前
Linux网络编程:应用层协议究竟是什么?从网络计算器到TCP Socket抽象基类完整实现
linux·网络·笔记·tcp/ip
feng_you_ying_li17 小时前
linux之网络层
linux·运维·网络