使用Postfix与Dovecot部署邮件系统

一些基本概念解释:

三种邮件协议:

SMTP 简单邮件传输协议,用于发送和中转发出的电子邮件,占用服务器的25/TCP端口号。

POP3 第三版邮局协议,用于把邮件存储到本地主机,占用服务器的110/TCP端口号。

IMAP4 第四版互联网信息访问协议,用于在本地主机上访问邮件,占用服务器的143/TCP端口号。

邮件收发服务程序:

Postfix 服务程序:基于SMTP协议,提供发件服务功能。

Dovecot 服务程序:基于POP3协议,提供收件服务功能。

MUA-MTA-MDA:

MUA 用户代理(Mail User Agent):为用户收发邮件的服务器

MDA 邮件投递代理(Mail Delivery Agent):用于保存用户邮件的服务器

MTA 邮件传输代理(Mail Transfer Agent):转发不同的邮件供应商之间的邮件

===========

测试环境:

物理机:windows 10

虚拟机软件:oracle VirtualBox

操作系统:RHEL7.4

在安装postfix服务之前,先参考前一篇随笔《RHEL7 DNS 服务 unbound 测试》,在服务器上搭建完成DNS服务,并且域名解析正常。

安装配置postfix服务程序:

1、安装postfix服务程序

# yum install postfix

2、配置poftfix服务程序

vi 编辑主配置文件/etc/postfix/main.cf,修改以下主要参数:

myhostname = mail.rusky.com    //邮局系统的主机名。
mydomain = rusky.com    //邮局系统的域名。
myorigin = $mydomain    //从本机寄出邮件的域名名称。(可以不写变量,写主机名也可以)
inet_interfaces    = all    //监听所有网卡接口。
mydestination = $myhostname,$mydomain    //可接收邮件的主机名或域名。
mynetworks    //设置可转发那些主机的邮件。默认。
relay_domains    //设置可转发那些网域的邮件。默认。

#mail_spool_directory = /var/mail 
#mail_spool_directory = /var/spool/mail  把这两行注释掉

home_mailbox = Maildir/   取消注释,让用户的邮件保存到自己家目录下的Maildir目录下。

3、创建电子邮件系统的登录帐号

Postfix与Vsftpd服务程序一样都可以调用本地系统帐号和密码,因此在本地进行常规帐号创建即可,最后再把配置妥当的postfix服务重启,加入到开机启动项即可。

# useradd  testuser01
# echo "testuser01" | passwd --stdin testuser01
Changing password for user testuser01.
passwd: all authentication tokens updated successfully.
# systemctl restart postfix
# systemctl enable postfix

4、配置Dovecot服务程序

安装dovecot:

# yum install dovecot

修改主配置文件:

# vi /etc/dovecot/dovecot.conf 
protocols = imap pop3 lmtp
disable_plaintext_auth = no  #添加这一行(允许客户使用明文进行密码验证,这是由于Dovecot服务程序为了保证电子邮件系统安全而默认强制客户必须使用加密方式进行登陆,而当前由于咱们没有加密系统的支持,因此需要添加参数来允许客户的明文登陆行为。)

#login_trusted_networks =

(设置允许登陆的网段地址,也就是说可以在这里限制只有来自于某个网段的客户才能使用电子邮件系统,如果想允许所有人都能来使用,可以不用修改本条参数)

修改ssl.conf配置文件:

# vi /etc/dovecot/conf.d/10-ssl.conf 

ssl = no   不使用ssl方式不验证

配置邮件路径与存储路径:

# vi /etc/dovecot/conf.d/10-mail.conf

mail_location = mail_location = maildir:~/Maildir   //取消该行注释即可。(因为我们修改了postfix的主配置文件home_mailbox = Maildir/,即用户的新邮件会放到/home/user/Maildir目录下,所以dovecot也得修改mail_location目录 )

然后切换到该用户身份后在家目录中建立用于保存邮件的目录,记得重启一下服务并加入到开机启动项就完成了对Dovecot服务程序的全部配置部署步骤:

systemctl restart dovecot

systemctl enable dovecot

Maildir目录可以手动创建,或是使用root帐号给用户发一封邮件后,会自动创建该目录。

[root@rhel1 ~]# cd /home/testuser01/
[root@rhel1 testuser01]# mkdir Maildir
[root@rhel1 testuser01]# ll
total 0
drwxr-xr-x. 2 root root 6 Oct  2 17:13 Maildir

生产中一般都是使用管理员帐号给新系统帐号发一封邮件,自动创建Maildir目录。比如公司新员工入职后,都会收到一封欢迎的邮件。其实也是为了创建Maildir目录。

[root@rhel1 ~]# useradd lxj
[root@rhel1 ~]# passwd lxj
Changing password for user lxj.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@rhel1 ~]# cd /home/lxj/
[root@rhel1 lxj]# ll
total 0
[root@rhel1 lxj]# mail lxj    --给lxj发封邮件后,会自动创建Maidir目录。
Subject: lxj
lxj
lxj
.
EOT
[root@rhel1 lxj]# ll
total 0
drwx------. 5 lxj lxj 39 Oct  2 17:08 Maildir
[root@rhel1 lxj]# 

现在用户的邮件是在/home/user/Mail/new目录下:

[root@rhel1 lxj]# cd Maildir/
[root@rhel1 Maildir]# ll
total 0
drwx------. 2 lxj lxj  6 Oct  2 17:08 cur
drwx------. 2 lxj lxj 61 Oct  2 17:08 new
drwx------. 2 lxj lxj  6 Oct  2 17:08 tmp
[root@rhel1 Maildir]# cd new/
[root@rhel1 new]# ll
total 4
-rw-------. 1 lxj lxj 481 Oct  2 17:08 1506935338.Vfd00I2031c61M838561.rhel1.rusky.com
[root@rhel1 new]# cat 1506935338.Vfd00I2031c61M838561.rhel1.rusky.com
Return-Path: <root@rusky.com>
X-Original-To: lxj
Delivered-To: lxj@rusky.com
Received: by mail.rusky.com (Postfix, from userid 0)
        id C18C931BF38D; Mon,  2 Oct 2017 17:08:58 +0800 (CST)
Date: Mon, 02 Oct 2017 17:08:58 +0800
To: lxj@rusky.com
Subject: lxj
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20171002090858.C18C931BF38D@mail.rusky.com>
From: root@rusky.com (root)

lxj
lxj

使用邮件客户端收发邮件:

如果是在Linux系统中,可以使用 thunderbird 客户端来收发电子邮件。

还有一个小知识点:按组群发邮件

创建测试帐号:

[root@rhel1 home]# useradd employee1
[root@rhel1 home]# useradd employee2
[root@rhel1 home]# useradd employee3
[root@rhel1 home]# echo "123456" | passwd --stdin employee1
Changing password for user employee1.
passwd: all authentication tokens updated successfully.
[root@rhel1 home]# echo "123456" | passwd --stdin employee2
Changing password for user employee2.
passwd: all authentication tokens updated successfully.
[root@rhel1 home]# echo "123456" | passwd --stdin employee3

修改配置文件:

# vi /etc/postfix/main.cf

alias_database = hash:/etc/aliases 

# vi /etc/aliases     添加如下内容

  admin: lxj,testuser01@rusky.com
  testgroup: employee1,employee2,employee3@rusky.com

注意aliases文件里的格式。

组名:邮件全名或帐号名

可以新建多个组。使用newalias命令或重启postfix使用配置生效。

[root@rhel1 ~]# newaliases
[root@rhel1 ~]# systemctl restart postfix.service

 测试:

原文地址:https://www.cnblogs.com/rusking/p/7597617.html