管理邮件服务器,属于系统管理员日常工作的一部分哎。 Sendmail是Linux系统里历史长久且功能强大的邮件传输代理, 在服务器邮件发送、队列管理,以及服务配置等方面,扮演着核心角色。 理解并且熟练运用sendmail命令,对于确保邮件服务的稳定、高效以及安全,来讲是至关重要的。 本文将会站在实际运维的角度,去梳理sendmail命令的关键用法。
如何在Linux系统中启动sendmail服务
使sendmail服务启动属于基础操作,一般而言,于基于RHEL或者CentOS的系统里,你能够运用 systemctl start sendmail 此一命令促使服务启动,启动完毕后,一定要运用 systemctl status sendmail 查看服务状态,保证其处于“active (running)” 这种状态,这意味着守护进程已成功加载且在后台运行。

在存在需要开机自启的情形下,应当去执行 systemctl enable sendmail,此操作会于系统启动之际自动加载sendmail服务,进而避免因服务器重启致使邮件服务出现中断,需要留意的是,sendmail的启动有可能依赖于网络服务,务必要确保你的主机名解析是正确的,不然的话或许会对服务启动或者邮件的正常投递产生影响。
如何配置sendmail的主配置文件
sendmail的配置关键所在是 /etc/mail/sendmail.cf 文件,然而它的结构繁杂众多,更为常见的操作方式是对其宏配置文件 /etc/mail/sendmail.mc 进行编辑,随后运用 m4 工具去生成最终的 .cf 文件。比如,改动监听接口,寻觅到 DAEMON_OPTIONS 这一行,把它变更为 Port=smtp, Addr=0.0.0.0, Name=MTA,借此准许所有网络接口进行连接。
.mc 文件修改完成后,要执行 m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 来生成新配置,之后必须重启sendmail服务让配置生效,配置过程里一个关键点是设置邮件中继和访问控制,这通常在 /etc/mail/access 文件中定义,用来控制哪些主机能够转发邮件。

如何使用sendmail命令发送测试邮件
作为最基础的邮件发送命令格式,是echo “邮件正文” | sendmail 收件人地址 ,举例来说,便是echo "This is a test." | sendmail ,此命令会即刻尝试去投递邮件,然而它一般不涵盖发件人等头信息linux sendmail 命令,有可能会被某些邮件服务器拒收 。
为了去发送一封更具完整性、具备更好可读性的测试邮件,特此建议采用以下格式:
sendmail << EOF
Subject: 测试邮件标题
From:
This is the test email body.
EOF
这种方法可以自定义邮件主题和发件人地址。发送后,检查 /var/log/maillog 日志文件linux虚拟主机,查看邮件的投递状态,这是排查发送失败问题最直接的方法。
如何查看和管理sendmail邮件队列
邮件若投递失败或者延迟,便会进入到队列之中。可运用mailq命令去查看当下队列里的全部邮件。这个命令会展现队列ID、邮件大小、入队的时间、发件人以及当前状态等诸般信息。队列状态一般涵盖“active”(正在予以处理)以及“deferred”(延迟进行投递,通常因为临时故障)。
对于队列里特定的邮件,能够使用 sendmail -q -v -i 队列ID 去强制马上尝试投递此邮件。要是需要清空一整个邮件队列(比如在碰到大量垃圾邮件之际),可以运用 sendmail -q 命令(不带有队列ID)即刻处理所有队列中的邮件,或者直接把队列目录下的文件(/var/spool/mqueue)删除了,不过删除操作得万分谨慎。

如何设置sendmail邮件别名和转发
邮件别名功能具备这样的作用,即能够把发送至一个地址的邮件,重新定向到另外一个或者多个地址。主要的别名配置文件是那个 /etc/aliases。比如说,增添一行 webmaster: root, ,这意味着发送给 webmaster 的邮件,将会被同时转递给 root 用户以及外部邮箱。编辑完成之后,必须运行 newaliases 命令才可重建别名数据库,如此修改才会生效。
涉及单个用户的邮件实施转发操作时,能够于用户家目录里创建 .forward 文件。举例来说,名为 john 的用户,在 /home/john/.forward 文件内写入 ,只要这样做了,那么把邮件发送给 john 的所有邮件,就都会自动朝着新地址进行转发。务必要保证 .forward 文件的权限合适(一般是 644)linux培训班,并且所属用户以及组无误,不然的话,sendmail 有可能鉴于安全方面的考量而忽略该文件。
如何排查sendmail邮件发送失败问题

那排查的头一步始终是去瞅系统日志,于多数Linux发行版本里,sendmail的日志处在/var/log/maillog,运用tail -f /var/log/maillog能够针对邮件发送的详尽过程予以实时监控。要着重留意日志当中的“reject”、“deferred”、“failure”等关键字眼,它们会把失败的缘由给点明了,譬如有DNS解析失败、目标服务器拒绝连接、认证失败此类情况。
存在着另一个常见出现故障的要点,那便是网络连接以及端口。运用“ telnet 目标邮件服务器 25 ”这般的命令能够去测试是不是能够连接到远程的SMTP端口。与此同时,要对本地防火墙设置予以检查,以此来保证不会有对25(SMTP)或者587(Submission)端口的阻止情况发生。除此之外,在当下反垃圾邮件极为严格的环境当中,要确保你的服务器IP并未被列入公开的黑名单(RBL),并且正确地配置了PTR反向DNS记录,这对于提升邮件送达率而言是非常关键重要的。
于实际的那些邮件服务器里进行运维工作时linux sendmail 命令,你究竟是更偏向去运用类似于能够sendmail这样的传统MTA类型,还是选择转向Postfix、Exim等这些替代方案呢?在处理过的最为棘手的邮件投递问题当中,你所认为的最为关键的其中一个去排查检验的步骤是什么呢?欢迎在评论区那儿分享你的经验以及看法 ,要是觉得本文具备有帮助作用,请点赞或者分享给更多的同行 。
