如何轻松掌握bash提升工作效率?

在Linux系统中开启SMTP服务器是搭建邮件服务的关键步骤,常用于网站通知、事务邮件等场景,以下是基于Postfix(Linux最常用的邮件传输代理)的详细操作流程,兼顾安全性与易用性,所有命令需以root权限执行。
sudo apt update && sudo apt upgrade # Debian/Ubuntu
sudo yum update # CentOS/RHEL

**检查主机名**  
   确保主机名解析正确(邮件服务依赖域名):
   ```bash
   hostname -f  # 输出应为完整域名(如 mail.example.com)

若未设置,编辑/etc/hostname和/etc/hosts文件。


安装与配置Postfix

安装Postfix

sudo apt install postfix mailutils  # Debian/Ubuntu
sudo yum install postfix cyrus-sasl-plain  # CentOS/RHEL

安装过程中选择 “Internet Site”,并输入邮件域名(如 example.com)。

基础配置

编辑主配置文件:

sudo nano /etc/postfix/main.cf

修改以下参数:

myhostname = mail.example.com     # 服务器完整域名
mydomain = example.com            # 邮件域名
myorigin = $mydomain              # 外发邮件域名
inet_interfaces = all             # 监听所有网络接口
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relayhost =                       # 留空(直接发送邮件)

启动服务

sudo systemctl restart postfix
sudo systemctl enable postfix

测试SMTP服务

本地发送测试邮件

echo "Test email body" | mail -s "SMTP Test" your-email@example.com

检查邮件是否送达(查看收件箱或垃圾箱)。

使用Telnet手动测试

telnet localhost 25

依次输入(替换your-email@example.com):

EHLO localhost
MAIL FROM: test@example.com
RCPT TO: your-email@example.com
DATA
Subject: Telnet Test
This is a manual SMTP test.
.  # 单独一行输入英文句点结束
QUIT

安全加固(必做步骤)

防火墙放行SMTP

sudo ufw allow 25/tcp  # 开放SMTP端口
sudo ufw allow 587/tcp # 提交端口(TLS加密)

启用SASL认证(防未授权转发)

安装SASL工具:

sudo apt install libsasl2-modules   # Debian/Ubuntu
sudo yum install cyrus-sasl-plain   # CentOS/RHEL

编辑SASL配置:

sudo nano /etc/postfix/sasl/smtpd.conf

添加:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN

创建认证用户:

sudo saslpasswd2 -c -u `postconf -h mydomain` username  # 按提示设置密码
sudo chown postfix /etc/sasldb2      # 授权Postfix访问

在main.cf中启用认证:

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_relay_restrictions = permit_sasl_authenticated, reject_unauth_destination

配置TLS加密(Let’s Encrypt证书示例)

安装Certbot:

sudo apt install certbot   # Debian/Ubuntu
sudo yum install certbot   # CentOS/RHEL

申请证书:

sudo certbot certonly --standalone -d mail.example.com

在main.cf中启用TLS:

smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem

常见问题解决

  • 邮件被拒收:
    检查域名SPF/DKIM记录(需在DNS添加TXT记录),使用工具如dig TXT example.com验证。
  • 端口25被屏蔽:
    联系云服务商解封(如AWS、阿里云需提交工单)。
  • SASL认证失败:
    检查/var/log/mail.log日志,确认sasldb2文件权限为640。
  • 高延迟发送:
    在main.cf添加disable_dns_lookups = yes(关闭反向DNS验证)。

维护建议

  1. 日志监控:
    tail -f /var/log/mail.log  # 实时查看邮件日志
  2. 定期更新:
    sudo apt upgrade postfix    # Debian/Ubuntu
    sudo yum update postfix     # CentOS/RHEL
  3. 备份配置:
    备份/etc/postfix目录,避免配置丢失。

引用说明:

  • Postfix官方文档:http://www.postfix.org/documentation.html
  • Let’s Encrypt证书指南:https://certbot.eff.org/instructions
  • SASL配置参考:Cyrus SASL Library Documentation
  • 安全实践依据:RFC 3207 (SMTP over TLS), RFC 4954 (SMTP Authentication)
    本文基于Ubuntu 22.04/CentOS 7实测,适用于主流Linux发行版。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9149.html

赞 (0)
酷番叔酷番叔
上一篇 2025年7月29日 07:06
下一篇 2025年7月29日 07:22

相关推荐

  • 新机器安装Linux系统时频繁蓝屏是什么原因该如何解决?

    新机器安装Linux系统时遇到蓝屏问题,通常与硬件兼容性、安装配置或驱动加载有关,新硬件可能因内核版本不支持或默认驱动冲突导致系统崩溃,需从安装前准备到系统配置逐步排查,安装前需确认硬件兼容性,新机器的CPU、主板芯片组、显卡等硬件可能较新,Linux内核可能未完全适配,可通过查阅硬件厂商提供的Linux兼容性……

    2025年8月25日
    25400
  • Linux中如何生成sh文件?详细步骤与方法解析

    在Linux系统中,sh文件(Shell脚本)是通过将一系列Linux命令写入文本文件并赋予可执行权限来实现自动化操作的工具,Shell脚本常用于批量处理文件、系统管理任务、自动化流程等场景,掌握sh文件的生成与使用能显著提升工作效率,以下是Linux生成sh文件的详细步骤、核心知识点及注意事项,创建sh文件的……

    2025年9月22日
    23900
  • linux如何搭建mc服务器地址

    在Linux系统上搭建Minecraft(MC)服务器可以让朋友或玩家通过IP地址联机游戏,享受自定义世界的乐趣,以下是详细的搭建步骤,涵盖环境准备、软件安装、配置优化及连接测试等内容,帮助您快速完成服务器部署,系统环境准备搭建MC服务器需要Linux系统(推荐Ubuntu 20.04+或CentOS 7……

    2025年9月16日
    20800
  • 如何用U盘启动Linux?具体操作步骤有哪些?

    要用U盘启动Linux,需经历准备阶段、制作启动盘、设置BIOS/UEFI、启动安装等步骤,以下是详细操作指南:准备阶段下载Linux镜像文件:访问Linux发行版官网(如Ubuntu、Fedora、Deepin等),下载ISO镜像文件(推荐选择LTS长期支持版本,更稳定),确保镜像完整,可通过校验和(如SHA……

    2025年9月20日
    28800
  • Linux系统下编译C++程序的具体步骤和命令有哪些?

    在Linux环境下编译C++程序是开发者必备的技能,通常使用GNU编译器集合(GCC)中的g++工具完成,本文将详细介绍Linux下C++编译的完整流程,从基础单文件编译到多文件项目管理,涵盖编译选项、Makefile使用等关键内容,帮助读者掌握不同场景下的编译方法,基础编译流程:单文件编译对于简单的单文件C……

    2025年9月25日
    23100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信