【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 小时前
Ubuntu20.04安装和配置Samba实现Win11下共享文件夹
linux·ubuntu·samba
ansondroider1 小时前
Ubuntu 抽取系统制作便于chroot的镜像文件
linux·ubuntu·chroot
羚羊角uou1 小时前
【Linux】编辑器vim和编译器gcc/g++
linux·运维·编辑器
努力一点9481 小时前
ubuntu22.04系统入门 linux入门 简单命令基础复习 实现以及实践
linux·运维·服务器·ubuntu·gpu算力
帅帅梓2 小时前
Linux性能检测与调优
linux·运维·php
van叶~2 小时前
Linux网络-------3.应⽤层协议HTTP
linux·网络·http
花小璇学linux3 小时前
imx6ull-驱动开发篇5——新字符设备驱动实验
linux·驱动开发·imx6ull·嵌入式软件
饭碗的彼岸one3 小时前
重生之我在10天内卷赢C++ - DAY 1
linux·开发语言·c++·经验分享·笔记·学习方法
Asuicao3 小时前
ansible巡检脚本
linux·运维·ansible
被遗忘的旋律.4 小时前
Linux驱动开发笔记(五)——设备树(下)——OF函数
linux·驱动开发·笔记