【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.
相关推荐
工具人55555 小时前
Linux 抓取 RAM Dump 完整指南
linux·运维·安全
不懂音乐的欣赏者5 小时前
Windows 下 ROS/ROS2 开发环境最优解:WSL 比直接安装、虚拟机、双系统更优雅!
linux·windows·ubuntu·ros·wsl·ros2·双系统
小狗爱吃黄桃罐头6 小时前
正点原子【第四期】Linux之驱动开发学习笔记-10.1 Linux 内核定时器实验
linux·驱动开发·学习
Kang强7 小时前
tcpdump 抓到 icmp 包,但是抓不到 tcp 包??
linux
demodashi6667 小时前
Linux下ag搜索命令详解
linux·运维·windows
無识8 小时前
Linux-第四章web服务
linux·运维·服务器
一叶知秋yyds8 小时前
Centos 安装 Docker教程
linux·docker·centos
fie88898 小时前
在CentOS 7上集成cJSON库的方法
linux·运维·centos
带土18 小时前
5. Unix/Linux 系统常用类型别名清单
linux·unix
爱吃橘的橘猫8 小时前
如何解决VMware虚拟机中Linux系统终端不显示ens33 inet IP地址的问题
linux·运维·服务器·虚拟机