准备
总体流程
服务端
- 创建两个用户用于测试邮件收发
/etc/mail
服务端配置文件都在里- 配置
sendmail.mc
是 Sendmail 邮件服务器的主配置文件模板 用于生成最终的sendmail.cf
配置文件 - 将配置好的
sendmail.mc
转换为sendmail.cf
配置文件 - 配置
access
定义允许通过该邮件服务器进行邮件中继的客户端 IP 或主机名。 - 启动 SASL认证
service saslauthd restart
- 启动 sendmail服务
service sendmail restart
- 检验 sendmail 与pop3两个服务是否开启
客户端
- 获取base64的用户与密码
- 发送 mail
- 接受 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
为本地域 ,表示发送到[email protected]
的邮件会被视为"本地邮件"
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 "[email protected]"|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"<[email protected]> // 发件人声明
250 2.1.0 "testauth2"<[email protected]>... Sender ok
rcpt to :[email protected] // 收件人声明
250 2.1.5 [email protected]... 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: <[email protected]>
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 [email protected]; Thu, 19 Jun 2025 00:34:09 +0800
Date: Thu, 19 Jun 2025 00:29:26 +0800
From: [email protected]
Message-Id: <202506181634.55IGTQnb024672@yhserver>
hello world
.
quit // 退出
+OK Logging out.
Connection closed by foreign host.