【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.
相关推荐
我材不敲代码1 小时前
PyQt5入门教程——简单实现一个登录界面
linux·运维·服务器
s09071362 小时前
PetaLinux 文件系统目录详解:嵌入式 Linux 根文件系统各文件夹的作用与内容
linux·运维·服务器
曼岛_2 小时前
[网络安全]Linux权限维持-后门篇
linux·chrome·web安全
Fanfanaas2 小时前
Linux 系统编程 进程篇 (三)
linux·运维·服务器·c语言·单片机·学习
历程里程碑2 小时前
Linux 50 IP协议深度解析:从报头结构到子网划分与NAT
java·linux·开发语言·网络·c++·python·智能路由器
九天鸟2 小时前
ESXI里面虚拟机服务器始终保持免用户认证状态
linux·运维·centos
青城山下————2 小时前
CentOS 7 安装 Redis(使用默认 6379 端口)完整实践与踩坑总结
linux·redis·centos
王琦03182 小时前
第十一章 管理Linux软件包和进程
linux·运维·服务器
lightqjx2 小时前
【Linux】Linux工具(yum、vim、gcc/g++、make/makefile、gdb)的详细介绍
linux·vim·gdb·yum·gcc/g++·linux工具·make/makefile
念恒123062 小时前
Linux基础开发工具(git篇)
linux·c语言·git