Linux 电子邮件服务器

引导

  • 了解电子邮件系统作用和构成
  • 了解DNS在电子邮件系统中的作用
  • 熟悉MUA、MTA、MDA和MRA的功能
  • 掌握电子邮件系统相关软件的安装和管控
  • 熟悉电子邮件系统重要配置文件的重要配置项
  • 掌握电子邮件系统的配置和邮件收发测试

1. 电子邮件系统基础

1.1 电子邮件工作流程

  • 发送过程
    1. 用户通过MUA(邮件客户端)发送邮件至SMTP服务器(Sendmail)
    2. SMTP服务器解析收件地址:
      • 本地域邮件 → 存入本地邮箱
      • 外部域邮件 → 转发至目标域SMTP服务器
  • 接收过程
    1. 用户通过MUA连接POP3/IMAP服务器(Dovecot)请求邮件
    2. Dovecot从邮件存储路径(/var/mail/)读取邮件
    3. MUA下载邮件至客户端

1.2 核心组件与协议

  • MUA:邮件客户端(Foxmail/Outlook)
  • MTA:邮件路由(Sendmail/Postfix)
  • MDA:本地邮件投递(Procmail)
  • MRA:邮件接收服务(Dovecot)
  • 关键协议
    • SMTP(TCP 25):发送邮件
    • POP3(TCP 110):下载邮件(服务器不保留副本)
    • IMAP(TCP 143):在线管理邮件(服务器保留副本)

1.3 DNS与MX记录

  • 邮件域(如cqcetli.net)需在DNS中配置MX记录指向邮件服务器
  • 示例DNS记录:
    @    IN  MX  10  mail.cqcetli.net.
    mail IN  A       192.168.11.254
    

2. 部署环境准备

2.1 服务器配置

  • IP分配
    • DNS服务器:192.168.11.252
    • 邮件服务器:192.168.11.254
  • 域名cqcetli.net
  • 关闭冲突服务
    systemctl mask postfix.service  # 禁用默认Postfix服务
    

2.2 安装核心软件

# 安装Sendmail及相关工具
yum install -y sendmail m4 sendmail-cf

# 安装Dovecot(POP3/IMAP服务)
yum install -y dovecot

# 安装邮件客户端(测试用)
yum install -y mailx

3. 配置Sendmail(SMTP服务)

3.1 生成主配置文件

  1. 编辑模板文件 /etc/mail/sendmail.mc
    # 修改监听地址(非127.0.0.1)
    DAEMON_OPTIONS(`Port=smtp,Addr=192.168.11.254, Name=MTA')dnl
    # 设置本地域名
    LOCAL_DOMAIN(`cqcetli.net')dnl
    
  2. 编译生成 sendmail.cf
    m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
    

3.2 关键配置文件

  1. 本地域名 (/etc/mail/local-host-names):
    cqcetli.net
    mail.cqcetli.net
    
  2. 邮件中继 (/etc/mail/access):
    cqcetli.net     RELAY
    192.168.11.0/24 RELAY
    
    生成数据库:
    makemap hash /etc/mail/access.db < /etc/mail/access
    
  3. 邮件别名 (/etc/aliases):
    # 群发功能:发给stud的邮件转发给多个用户
    stud: zhangsan,lisi,wangwu
    
    更新数据库:
    newaliases
    

3.3 创建邮件用户

groupadd stud
useradd -g stud -s /sbin/nologin zhangsan
useradd -g stud -s /sbin/nologin lisi
useradd -g stud -s /sbin/nologin wangwu
echo "123456" | passwd --stdin zhangsan  # 设置密码
echo "123456" | passwd --stdin lisi
echo "123456" | passwd --stdin wangwu

3.4 启动服务

systemctl restart sendmail
systemctl enable sendmail

4. 配置Dovecot(POP3/IMAP服务)

4.1 修改主配置

  1. /etc/dovecot/dovecot.conf
    protocols = imap pop3 lmtp    # 启用协议
    listen = 192.168.11.254, ::   # 监听地址
    
  2. 允许明文认证(测试用):
    echo "disable_plaintext_auth = no" >> /etc/dovecot/conf.d/10-auth.conf
    

4.2 设置邮件存储

编辑 /etc/dovecot/conf.d/10-mail.conf

mail_location = mbox:~/mail:INBOX=/var/mail/%u

4.3 修复权限问题

chmod 0600 /var/mail/*  # 必须权限
systemctl restart dovecot

5. 客户端测试

5.1 Linux客户端(mailx)

  1. 配置 /etc/mail.rc
    set from=lisi@cqcetli.net
    set smtp=mail.cqcetli.net
    set smtp-auth-user=lisi@cqcetli.net
    set smtp-auth-password=123456
    
  2. 发送邮件:
    echo "Hello" | mail -s "Test" zhangsan@cqcetli.net
    
  3. 接收邮件(用户zhangsan):
    mail -u zhangsan
    

5.2 Windows客户端(Foxmail)

  1. 新建账户:
    • 邮箱地址:zhangsan@cqcetli.net
    • 密码:123456
    • POP3服务器:mail.cqcetli.net(端口110)
    • SMTP服务器:mail.cqcetli.net(端口25)
  2. 测试收发:
    • 发送邮件至 lisi@cqcetli.net
    • 接收邮箱验证邮件

6. 高级配置

6.1 SMTP身份验证(防垃圾邮件)

  1. 安装SASL:
    yum install -y cyrus-sasl
    systemctl start saslauthd
    
  2. 修改 /etc/mail/sendmail.mc
    TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl  # 启用认证端口
    
  3. 重新编译并重启:
    m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
    systemctl restart sendmail
    

6.2 虚拟域配置

  1. DNS添加虚拟域
    zone "long.com" IN {
      type master;
      file "long.com.zone";
    }
    
    /var/named/long.com.zone
    @    IN MX 10 mail.long.com.
    mail IN A   192.168.11.254
    
  2. Sendmail配置
    • 添加虚拟域到 /etc/mail/local-host-names
    • 配置虚拟用户映射 (/etc/mail/virtusertable):
      user1@long.com   user1@cqcetli.net
      
    • 生成数据库:
      makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
      

关键日志与排查

  • Sendmail日志/var/log/maillog
  • Dovecot日志/var/log/dovecot.log
  • 测试命令
    telnet 192.168.11.254 25  # 测试SMTP
    telnet 192.168.11.254 110 # 测试POP3
    

通过以上步骤,即可完成基于Sendmail和Dovecot的电子邮件系统部署。