目录

2024-11-29-一文带你搭建属于自己的邮件服务器基于sendmail

一文带你搭建属于自己的邮件服务器(基于sendmail)

Sendmail 服务实验报告

一、实验目的

本实验旨在完成 Sendmail 邮件服务器的安装与配置,包括相关服务(如 IMAP)的设置,实现邮件的发送、接收以及客户端的正常访问,同时确保整个邮件系统在网络环境中的稳定运行和功能验证。

涉及dns服务的相关配置请参考:

二、实验环境与安装包准备

(一)操作系统

基于 Linux 系统,具备软件包管理功能(如 RPM 包管理)。

(二)安装包

  1. sendmail - 8.12.8 - 4.i386.rpm :Sendmail 主程序软件包,包含主配置文件,是邮件服务器的核心组件。
  2. m4 - 1.4.1 - 13.i386.rpm :宏转换配置文件相关软件包,用于处理 Sendmail 配置文件中的宏定义转换。
  3. imap - 2001a - 18.i386.rpm :IMAP 协议包,用于支持邮件客户端通过 IMAP 协议访问邮件服务器。
  4. openwebmail - 2.32 - 1.i386.rpm :WEB 页面包,可能用于提供基于网页的邮件访问界面(若配置使用)。
  5. sendmail - cf - 8.12.8 - 4.i386.rpm :与 Sendmail 服务器配置文件相关的文件和程序,用于辅助配置 Sendmail。
  6. sendmail - doc - 8.12.8 - 4.i386.rpm :Sendmail 服务器的文档,包含帮助文档和配置示例等信息,有助于管理员进行配置和故障排除。

三、实验步骤

(一)配置 Sendmail 服务

  1. 编辑宏文件(/etc/mail/sendmail.mc)设置 IP 地址
    • 使用文本编辑器打开宏文件 vim /etc/mail/sendmail.mc
    • 在文件中找到相关位置(如示例中的地址限制部分),设置如下参数(假设邮件服务器的 IP 地址为 192.168.2.1 ):
DAEMON_OPTIONS(`Port=smtp,Addr=192.168.2.1, Name=MTA`)dnl

https://i-blog.csdnimg.cn/direct/194629356c3447ddb45672f103466b54.png

- 此设置指定 Sendmail 守护进程监听的 SMTP 端口(`Port=smtp`),绑定的 IP 地址(`Addr=192.168.2.1`),并为该守护进程命名为 `MTA`(邮件传输代理)。
  1. 文件转换

    • 执行命令
    m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
    • 此命令将宏文件( sendmail.mc )通过 m4 宏处理器进行转换,生成实际的 Sendmail 配置文件( sendmail.cf )。 sendmail.cf 文件是 Sendmail 服务器的核心配置文件,控制着邮件服务器的各种行为,如邮件的接收、转发、投递规则等。
  2. 修改 DNS 数据库,加入 MX 记录

    • 使用文本编辑器打开 DNS 数据库文件(假设为 /var/named/li.com.zone ,根据实际 DNS 配置情况而定)。
    • 在文件中添加或修改 MX 记录,示例如下:
$TTL 86400
@    IN  SOA  @		root.li.com. (
			                54 : serial(d. adams)
			                3H : refresh
			                15M : retry
			                1W ; expiry
			                1D) : minimum
@    IN  NS  @
@    IN  MX  10 mail.li.com.
mail  IN  A  192.168.2.1
ftp   IN  A  192.168.2.1
www   IN  A  192.168.2.1

https://i-blog.csdnimg.cn/direct/a0e335e4e88240aaaeabb2347caa4bef.png

- `MX` 记录(`@ IN MX 10 mail.li.com.`)指定了邮件服务器的优先级(`10`)和域名(`mail.li.com`),表示当有邮件发送到 `li.com` 域时,应优先将邮件发送到 `mail.li.com` 邮件服务器。`A` 记录则将域名(如 `mail.li.com`、`ftp.li.com`、`www.li.com`)与对应的 IP 地址(`192.168.2.1`)进行映射。
  1. 编辑本地别名文件
    • 编辑文件 /etc/mail/local-host-names ,可以添加邮件服务器的本地域名别名(例如,如果邮件服务器除了接收 li.com 域的邮件,还接收 example.com 域的邮件,可以在此文件中添加 example.com )。

      https://i-blog.csdnimg.cn/direct/0d0daf5935584c5c8cd863b0424eb717.png

    • 编辑文件 /etc/mail/access ,根据邮件的来源决定接受/拒绝、传递邮件的规则。默认包含以下内容:

localhost.localdomain                RELAY
localhost                        RELAY
127.0.0.1                        RELAY
192.168.137.2                    RELAY       ---本机地址
192.168.137                      RELAY      ----添加一个网段  

配置参数说明:

RELAY 表示允许转发来自相应地址或域名的邮件;

REJECT 表示拒绝;

OK 表示无条件接收;

DISCARD 表示丢弃邮件(但不返回错误信息给发件人)。

  • 可以根据实际需求添加或修改规则,例如允许或拒绝特定域名或 IP 地址段的邮件访问。

(二)重启 Sendmail 服务

执行命令 service sendmail restart ,使配置生效。

这将停止并重新启动 Sendmail 服务,应用新的配置参数,包括 IP 地址设置、DNS 记录更新以及别名和访问规则的修改等。

(三)测试 Sendmail 服务

  1. 使用 nslookup 工具测试邮件服务器域名解析:
[root@www named]# nslookup mail.li.com
Note: nslookup is deprecated and may be removed from future releases.
Consider us ing the dig' or host' programs instead. Run ns lookup wi th
the -sil [ent]' option to prevent this message from appearing.
Server:
192.168.2.1
Address:
192.168.2.1#53
Name: mil.li.com
Address: 192.168.2.1
- 此测试检查邮件服务器的域名(`mail.li.com`)是否能够正确解析到配置的 IP 地址(`192.168.2.1`)。如果解析不正确,可能导致邮件发送和接收失败。
  1. 使用 telnet 连接到邮件服务器的 SMTP 端口进行测试:
[root@w named]# telnet 192.168.2.1 25
Trying 192.168.2.1...
Connected to 192.168.2.1.
Escape character is '']'.
220 ww.li.com ESMTP Sendmail 8.12.8/8.12.8; Wed, 12 May 2010 21:34:57+0800)
- 此测试模拟邮件客户端连接到邮件服务器的 SMTP 端口(`25`),如果成功连接并收到服务器的响应(如示例中的 `220 ww.li.com ESMTP Sendmail 8.12.8/8.12.8; Wed, 12 May 2010 21:34:57+0800)`,表示邮件服务器的 SMTP 服务正在运行且可接受连接。在连接成功后,可以尝试发送简单的邮件命令(如 `EHLO`、`MAIL FROM`、`RCPT TO`、`DATA` 等)来进一步测试邮件发送功能,但注意在测试完成后,按 `ctrl + ]`,回车,然后再按 `q` 或者输入 `quit` 进行退出连接。

(四)配置 IMAP 服务

  1. 编辑 /etc/xinetd.d/ipop3/etc/xinetd.d/imap 文件,将 disable 选项改为 no ,如下所示:

    https://i-blog.csdnimg.cn/direct/cd93ffcea53e4acab7233ec95b5e8ec4.png

    https://i-blog.csdnimg.cn/direct/25cd3212af6c4668bf8ccbefc16f63e7.png

    • 此修改启用了 POP3 和 IMAP 服务,使邮件客户端能够通过这些协议从邮件服务器收取邮件。
  2. 重新启动 xinetd 服务,执行命令 service xinetd restart 。这将使对 pop3imap 服务的配置生效,启动相应的服务进程,等待客户端连接并提供邮件收取服务。

(五)测试 pop3 服务

使用 telnet 连接到邮件服务器的 pop3 端口( 110 )进行测试:

[root@ww named]# telnet 192.168.2.1 110
Trying 192.168.2.1...
Connected to 192.168.2.1.
Escape character is '']'.
+OK POP3 ww.li.com v2001.78rh server ready)
- 此测试检查邮件服务器的 pop3 服务是否正常运行。如果成功连接并收到服务器的响应(如示例中的 `+OK POP3 ww.li.com v2001.78rh server ready)`,表示  pop3服务已启动并可接受客户端连接,邮件客户端可以使用 IMAP 协议访问邮件服务器上的邮件。

(六)客户端配置与测试

  1. 在客户端安装 Foxmail(或其他邮件客户端软件),并建立账户,配置相关参数,如邮件服务器地址( 192.168.2.1 )、用户名(如 xinhua@li.com )、密码等。

    https://i-blog.csdnimg.cn/direct/f038e0f7652441f988391844ef3785be.png

  2. 在 Linux 系统中建立一个账户为 xinhua ,密码为 123456 (此步骤是为了在邮件服务器上创建对应的用户邮箱,具体操作可能涉及到系统用户管理和邮件服务器用户管理的集成,根据实际邮件服务器软件的要求进行操作)。

  3. 在客户端编辑邮件进行测试,发送邮件并检查是否能够正常接收,验证邮件服务器的发送和接收功能是否正常。例如,从客户端发送一封邮件给自己,然后检查收件箱是否收到该邮件,检查邮件内容是否完整,附件是否正常等。

    https://i-blog.csdnimg.cn/direct/482820236ce94074b80236177b430603.png

四、实验总结

本次实验完成了 Sendmail 邮件服务器及其相关服务(IMAP)的配置与测试。

在实验过程中,需要注意各个配置文件的语法和参数含义,特别是宏文件转换、DNS 记录设置、别名和访问规则的配置。同时,要确保服务的正确启动和端口监听,以及客户端的正确配置和连接测试。通过全面的测试,可以验证邮件服务器在不同场景下的功能完整性,包括邮件的发送、接收、域名解析以及不同协议(SMTP、IMAP)的支持。如果在实验过程中遇到问题,需要仔细检查配置文件、服务状态、网络连接以及客户端设置等方面,逐步排查并解决问题。

68747470733a2f2f626c6f672e:6373646e2e6e65742f77656978696e5f34343135313132332f:61727469636c652f64657461696c732f313433363431393633