电子邮件服务之邮件发送、接收

272 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情

大家好,上篇文章简单介绍了电子邮件服务的SMTP协议和POP3协议,那这篇文章就来介绍基于这两个协议搭建邮件服务器。

基于Postfix的邮件发送

安装Postfix

Postfix是CentOS7中默认安装的MTA,因此只需直接启动:

systemctl start postfix

SMTP默认使用25号端口,使用以下命令查看端口是否被Postfix占用:

netstat -tnlp | grep :25

更改主机名

将主机名改为test.com,编辑network文件:

vim /etc/sysconfig/network

将其中的HOSTNAME项改为test.com,保存退出。

配置Postfix

vim /etc/postfix/main.conf
myhostname=mail.test.com
mydomain= test.com
myorigin= $mydomain
mydestination= $myhostname, localhost.$mydomain, localhost, $rmydomain
inet_interfaces=all
home_mailbox=Maildir/

设置内容按行依次是主机名、服务器域名、发件人域名、收件人域名、Postfix监听的网络接口、邮件存储位置。

保存更改后重启Postfix,使配置生效

systemctl restart postfix

使用Postfix发送邮件

使用telnet命令向SMTP服务器发起连接请求:

telnet 0 25

0表示本地服务器地址,可使用localhost或主机IP代替,连接成功显示以下信息:

Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
220 localhost.localdomain ESMTP Postfix 		# 连接成功,已正常登录

SMTP不对用户进行认证,可随意设置发件人与收件人

helo mail.test.comy			# 向服务器表明身份
250 mail.test.com
mail from:chan@test.com		# 设置寄件人
250 2.1.0 Ok
rcpt to:test@test.com 		# 设置收件人
250 2.1.5 Ok

以上操作只设置一名收件人,若需要发送给多名用户,可重复使用rept命令,执行成功后就可以使用data命令编辑正文:

data
354 End data with <CR><LF>.<CR><LF>
hello world!
.
250 2.0.0 Ok:queued as 55C1E1469B20

邮件发送完成使用quit命令退出,至此基于Postfix的邮件发送操作基本完成

quit
221 2.0.0 Bye
Connection closed by foreign host.

基于Dovecot收取邮件

DovecotMDA一种,用于搭建POP3/IMAP服务器,实现电子邮件收信功能。

安装Dovecot

yum install -y dovecot
systemctl start dovecot

POP3服务器默认使用110端口,使用telnet命令连接POP3服务器:

telnet 0 110

配置用户认证方式

Dovecot默认开启系统认证方式,这种认证方式会把系统中的用户视为邮箱用户。但直接使用系统用户很不安全,一般选择使用文件认证。

Dovecot的认证方式通过配置文件进行设置,文件路径:

/etc/dovecot/conf.d/10-auth.conf

修改文件内容,注释系统认证,启用文件认证,修改后内容如下:

#! include auth-system.conf.ext
! include auth-passwdfile.conf.ext

使用文件认证时,需要为用户配置认证文件,用户认证文件路径由下以文件中的passwd项指定:

/etc/dovecot/conf.d/auth-passwdfile.conf.ext

打开以上文件可以观察到如下内容:

passdb{
	drive=passwd-file
	args=scheme=CRYPT username_format=%u /etc/dovecot/users
}

由文件信息看出,用户认证文件路径为:

/etc/dovecot/users			# 该文件需要用户自行创建

编辑文件写入用户认证信息,例如用户test(密码test,id为1001)写入的内容为:

test:{plain}test:1001:1001::/home/test

以上内容由" : "分割为5项,依次表示为用户名、加密方式与口令、代收用户的用户id、代收用户的组id、代收邮件的存储位置。加密方法采用plain时,用户名和口令会以base64格式在网格上传输,相当于明码。

配置mail_location

用户认证文件配置完成后,还需对以下文件中的mail_location选项进行配置:

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

mail_location选项的值遵循以下格式:

mail_location=mailbox-fomat:path[:key=value...]

参数说明:

  • mailbox-fomat表示邮件格式:
    • mbox:传统的UNIX邮件格式
    • maildir:一个文件包含一条邮件信息的格式
    • dbox:Dovecot专用的高效邮件文件格式,可细分以下3类:
      • sdbox
      • mdbox
      • dbox
    • cydir:Dovecot专用的类似Cyrus格式的邮件格式
  • path:邮件存放路径。此路径必须是绝对路径且不能为根目录
  • key=value:可选参数

配置文件给出了3种示例取值,此处启用第二种:

# mail_location=maildir:~/Maildir
  mail_location=mbox:~/mail:INBOX=/var/mai1/%u
# mail_location= mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n

下面创建以上配置文件中指定的邮件存放目录,并将其所有者和所属组都更改为开始设置的用户,例如这里是test:

make -p /home/test/mail/.imap/INBOX
chown -R test:test /home/test/mail

以上配置结束后重启Dovecot:

systemctl restart dovecot

使用Dovecot管理邮箱

使用telnet命令登录邮箱后,使用user命令和pass命令完成用户认证:

user test
+OK
pass test
+OK Logged in.

认证成功后就可以使用POP3命令进行操作了