使用Postfix与Dovecot部署邮件系统

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除

目录

一、电子邮件系统

二、部署基础的电子邮件系统

1、配置Postfix服务程序

2、配置Dovecot服务程序

3、客户使用电子邮件系统

三、设置用户别名邮箱

四、Linux邮件客户端

致谢


一、电子邮件系统

电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议有下:

  • 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电子邮件,占用服务器的25/TCP端口
  • 邮局协议版本3(Post Office Protocol 3):用于将电子邮件存储到本地主机,占用服务器的110/TCP端口
  • Internet消息访问协议版本 4(Internet Message Access Protocol 4):用于在本地主机上访问邮件,占用服务器的143端口/TCP端口

电子邮件系统中,为用户收发邮件的服务器名为邮件用户代理(Mail User Agent,MUA);用于保存用户邮件的"信箱"服务器为邮件投递代理(Mail Delivery Agent,MDA),其职责是把来自邮件服务供应商之间的邮件,把来自MUA的邮件转发到合适的MTA服务器

用户发送邮件后不必等待投递工作完成即可下线;若对方邮件服务器(MTA)宕机或对方临时离线,则发件服务器(MTA)就会把要发送的内容自动的暂时保存到本地,等检测到对方邮件服务器恢复后会立即再次投递,期间一般无需运维人员维护处理,随后收信人(MUA)就能在自己的信箱中找到这封邮件了。

注意事项:

  • 添加反垃圾与反病毒模块:能够很有效地阻止垃圾邮件或病毒邮件对企业信箱的干扰
  • 对邮件加密:可有效保护邮件内容不被黑客盗取和篡改
  • 添加邮件监控审核模块:可有效地监控企业全体员工的邮件中是否有敏感词、是否有透露企业资料等违规行为
  • 保障稳定性:电子邮件系统的稳定性至关重要,运维人员应做到保证电子邮件系统的稳定运行,并及时做好防范分布式拒绝服务(Distributed Denial of Service,DDoS)攻击的准备

二、部署基础的电子邮件系统

肯定要有发件服务和收件服务,所以需要使用基于SMTP协议的Postfix服务程序提供发件服务功能,并使用基于POP3协议的Dovecot服务程序提供收件服务功能。这样,用户就能使用Outlook Express或Foxmail等客户端服务程序正常的收发邮件了。流程如下:

早期Linux系统中,默认使用Sendmail服务程序提供发件服务;在RHEL 8中使用Postfix服务程序;

先部署bind服务程序,为电子邮件服务器和客户端提供DNS域名解析服务;

第1步配置服务器主机名称,需要保证服务器主机名称与发现域名保持一致:

 [root@Linux ~]# vim /etc/hostname
 mail.Linux.com
 [root@Linux ~]# hostname
 Linux

第2步清空Iptables防火墙默认策略,并保持策略状态,避免因防火墙中默认存在的策略阻止了客户端DNS解析域名及收发邮件:

 [root@Linux ~]# iptables -F
 [root@Linux ~]# iptables-save 
 [root@Linux ~]# firewall-cmd --permanent --zone=public --add-service=dns
 Warning: ALREADY_ENABLED: dns
 success
 [root@Linux ~]# firewall-cmd --reload 
 success

第3步为电子邮件系统提供域名解析;前面已经讲过bind-chroot服务程序的配置方法,这里给出配置主配置文件、区域配置文件和域名数据文件的配置内容,其余步骤自行完成;

 [root@Linux ~]# yum install bind-chroot
 [root@Linux ~]# cat /etc/named.conf 
 //
 // named.conf
 //
 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
 // server as a caching only nameserver (as a localhost DNS resolver only).
 //
 // See /usr/share/doc/bind*/sample/ for example named configuration files.
 //
 ​
 include "/etc/transfer.key";
 ​
 options {
     listen-on port 53 { any; };     # 修改为any
     listen-on-v6 port 53 { ::1; };
     directory   "/var/named";
     dump-file   "/var/named/data/cache_dump.db";
     statistics-file "/var/named/data/named_stats.txt";
     memstatistics-file "/var/named/data/named_mem_stats.txt";
     secroots-file   "/var/named/data/named.secroots";
     recursing-file  "/var/named/data/named.recursing";
     allow-query     { any; };       # 修改为any
 [root@Linux ~]# cat /etc/named.rfc1912.zones 
 ...
 zone "linuxprobe.com" IN {
     type master;
     file "linuxprobe.com.zone";
     allow-update {none;};
 };
 ...

建议在复制正向解析模板文件时,对cp命令追加-a参数,能够让新文件继承原文件的属性和权限信息:

 [root@Linux ~]# cp -a /var/named/named.localhost /var/named/linuxprobe.com.zone 
 [root@Linux ~]# vim /var/named/linuxprobe.com.zone
 $TTL 1D
 @   IN SOA  linuxprobe.com root.linuxprobe.com. (
                     0   ; serial
                     1D  ; refresh
                     1H  ; retry
                     1W  ; expire
                     3H )    ; minimum
     NS  ns.linuxprobe.com
 ns  IN A    192.168.10.10
 @   IN MX 10    mail.linuxprobe.com
 mail    IN A    192.168.10.10
 [root@Linux ~]# systemctl restart named
 [root@Linux ~]# systemctl enable    named

修改好配置文件后记得重启bind服务程序,这样电子邮件系统所对应的服务器主机名即为mail.inuxprobe.com,而邮件域为@linuxprobe.com。把服务器的DNS地址修改成本地IP地址,如图15-4所示。

让新配置的网卡参数立即生效;

 [root@Linux ~]# nmcli connection up ens160

最后,能够用ping命令获得主机名所对应的IP地址,证明配置正确;

 [root@Linux ~]# ping -c 4 mail.linuxprobe.com

1、配置Postfix服务程序

Postfix是一款由IBM资助研发的免费开源电子邮件服务程序,能够很好地兼容Sendmail服务程序,可以方便Sendmail用户迁移到Postfix服务上。其邮件收发能力强于Sendmail服务,能自动增加、减少进程的数量来保证电子邮件系统的高性能与稳定性;其由许多小模块组成,每个小模块都可以完成特定的功能,因此可在生产工作环境中根据需求灵活搭配它们。

第1步安装Postfix服务程序

 [root@Linux ~]# yum install postfix

第2步配置Postfix服务程序;主配置文件(/etc/postfix/main.cf);常用7个参数如下:

参数 作用
myhostname 邮局系统的主机名
mydomain 邮局系统的域名
myorigin 从本机发出邮件的域名名称
inet_interfaces 监听的网卡接口
mydestination 可接收邮件的主机名或域名
mynetworks 设置可转发哪些主机的邮件
relay_domains 设置可转发哪些网域的邮件

在Postfix服务程序的主配置文件中,总计需要修改5处。首先是在第95行定义一个名为myhostname的变量,用来保存服务器的主机名称。记住这个变量的名称,下边的参数需要调用它:

 [root@Linux ~]# vim /etc/postfix/main.cf
 ...
 94 #myhostname = host.domain.tld
 95 myhostname = mail.Linux.com
 96

然后在第102行定义一个名为mydomain的变量,用来保存邮件域的名称;

 100 # parammeters.
 101 #
 102 mydomain = linuxprobe.com
 103

在第118行调用前面的mydomain变量,用来定义发出邮件的域;

 117 #myorigin = $myhostname
 myorigin = $mydomain

第四处修改是在第135行定义网卡监听地址。可以指定要使用服务器的哪些IP地址对外提供电子邮件服务;也可以干脆写成al,代表所有IP地址都能提供电子邮件服务:

 132 #inet_interfaces = all
 133 #inet_interfaces = $myhostname
 134 #inet_interfaces = $myhostname,localhost
 135 inet_interfaces = all
 136

最后一处修改是在第183行定义可接收邮件的主机名或域名列表

 181 # See also below,section "REJECTIONG MAIL FOR UNKOWN LOCAL USERS". 
 182 # 
 183 mydestination = $myhostname,$mydomain

第3步创建电子邮件系统的登录账户。Postfix与vsftpd服务程序一样,都可以调用本地系统的账户和密码,因此在本地系统创建常规账户即可。最后重启配置妥当的postfix服务程序,并将其添加到开机启动项;

 [root@Linux ~]# useradd linchuan
 [root@Linux ~]# echo "Linux" | passwd --stdin liuchuan
 Changing password for user liuchuan.
 passwd: all authentication tokens updated successfully.
 [root@Linux ~]# systemctl restart postfix
 [root@Linux ~]# systemctl enable postfix

2、配置Dovecot服务程序

Dovecot是一款能够为Linux系统提供IMAP和POP3电子邮件服务的开源服务程序,安全性极高,配置简单,执行速度快,而且占用的服务器硬件资源也较少,因此是一款值得推荐的收件服务程序。

第1步安装Dovecot服务程序软件包

 [root@Linux ~]# yum install -y dovecot

第2步配置部署Dovecot服务程序。在Dovecot服务程序的主配置文件中进行如下修改:第24行,把Dovecot服务程序支持的电子邮件协议修改为imap、pop3和lmtp。然后在这一行下面添加一行参数,允许用户使用明文进行密码验证。之所以这样操作,是因为Dovecot服务程序为了保证电子邮件系统的安全而默认强制用户使用加密方式进行登录,而由于当前还没有加密系统,因此需要添加该参数来允许用户的明文登录,

 [root@Linux ~]# vim /etc/devecot/devecot.conf
 ...
 23 # Protocols we want to be serving.
 24 protocols = imap pop3 lmtp
 25 disable_plaintext_auth = no
 26

在主配置文件中的第49行,设置允许登录的网段地址,也就是说我们可以在这里限制只有来自于某个网段的用户才能使用电子邮件系统。如果想允许所有人都能使用,则不用修改本参数:

 48 # three networks. Typically you'd specify your IMAP proxy servers here.
 49 login_trusted_networks = 192.168.10.0/24
 50

第3步配置邮件格式与存储路径。在Dovecot服务程序单独的子配置文件中,定义一个路径,用于指定要将收到的邮件存放到服务器本地的哪个位置。这个路径默认已经定义好了,只需要将该配置文件中第25行前面的井号(#)删除即可。

 [root@Linux ~]# vim /etc/devocot/conf.d/10-mail.conf
 24 # mail_location = maildir:~/Maildir
 25 mail_location = mbox:~/mail:INBOX=/var/mail/%u
 26 # mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
 27

然后切换到配置Postfix服务程序时创建的boss账户,并在家目录中建立用于保存邮件的目录。重启Dovecot服务并将其添加到开机启动项中。至此,对Dovecot服务程序的配置部署步骤全部结束;

 [root@Linux ~]# su - liuchuan
 [liuchuan@Linux ~]# mkdir -p mail/.imap/INBOX
 [liuchuan@Linux ~]# exit
 logout
 [root@Linux ~]# systemctl restart dovecot
 [root@Linux ~]# systemctl enavble dovecot

记得把上面所提到的邮件协议在防火墙中的策略予以放行;

 [root@Linux ~]# firewall-cmd --permanent --zone=public --add-service=imap
 success
 [root@Linux ~]# firewall-cmd --permanent --zone=public --add-service=pop3
 success
 [root@Linux ~]# firewall-cmd --permanent --zone=public --add-service=smtp
 success
 [root@Linux ~]# firewall-cmd --reload
 success

3、客户使用电子邮件系统

使用Windows操作系统中自带的Outlook软件来进行测试(也可使用其他)按照下面来设置电子邮件系统以及DNS服务器和客户端主机的IP地址,以便正常解析域名;

主机名称 操作系统 IP地址
电子邮件系统及DNS服务器 RHEL 8 192.168.10.10
客户端主机 Windows 10 192.168.10.30

在Windows上注册与登录Outlook;

...略...

三、设置用户别名邮箱

四、Linux邮件客户端

Thunderbird是一款由fireFox火狐浏览器的母公司Mozila基金会发布的电子邮件客户端,兼具Firefox浏览器的各种优势,实现跨平台支持,拥有各种插件和丰富功能,简单的操作让用户更容易轻松地上手。

略...

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。 

学习永无止境,让我们共同进步!!

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 16:18:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 16:18:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 16:18:05       58 阅读
  4. Python语言-面向对象

    2024-07-19 16:18:05       69 阅读

热门阅读

  1. 在 Ubuntu Server 22.04 上安装 Docker 的详细步骤

    2024-07-19 16:18:05       20 阅读
  2. 航班管理系统【C语言版】单文件编写

    2024-07-19 16:18:05       18 阅读
  3. Linux常用命令(持续更新)

    2024-07-19 16:18:05       20 阅读