菜单
本页目录

14 邮件传输服务器

1 介绍

协议SMTPpop3imap其他
软件postfix dovecot
配置文件目录/etc/postmail/ /etc/dovecot/conf.d/
配置文件main.cf 10-mail.conf 10-auth.conf dovecot-sql.conf.ext
普通端口25出110收143收
加密端口465出995收993收

配置文件详解:

/etc/postmail/main.cf
    myhostname:邮件服务器主机名
    mydomain:邮件域
    myorigin:设置用户发信时,使用的邮件域
    mydescription:设置允许收信的用户邮件域

2 实验步骤

1) 7-2(202) 搭建DNS

​ 将extmail.org域名解析到7-2

​ 注意:解析配置文件中需要在原有NS解析后新增 MX 3解析

[root@localhost ~]# yum -y install bind 

[root@localhost ~]# vim /etc/named.conf 												#将监听端口、允许访问都改为any
[root@localhost ~]# cp -a /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
[root@localhost ~]# vim /etc/named.rfc1912.zones										#修改区域配置文件
[root@localhost ~]# tail -n5 /etc/named.rfc1912.zones
zone "extmail.org" IN {
	type master;
	file "extmail.localhost";
	allow-update { none; };
};
[root@localhost ~]# cp -a /var/named/named.localhost /var/named/extmail.localhost
[root@localhost ~]# vim /var/named/extmail.localhost									#修改解析配置文件
[root@localhost ~]# cat /var/named/extmail.localhost
$TTL 1D
@	IN SOA	extmail.org. rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	dns.extmail.org.
	MX 3	www.extmail.org.
dns	A	192.168.18.202
www	A	192.168.18.201
[root@localhost ~]# systemctl start named
[root@localhost ~]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

2)7-1(201)

1.邮件服务器

​ (1)安装需要的rpm包,并启动httpd、mariadb

[root@localhost ~]# yum -y install gcc* httpd perl* mailx mysql mariadb-server
[root@localhost ~]# systemctl start httpd mariadb
[root@localhost ~]# systemctl enable httpd mariadb

​ (2)上传extmail.zip

​ 到 /var/www/html (防止数据丢失,建议用winscp)(上传到家目录均可,后面不会用到 /var/www/html)

​ 并复制extmail、extman到 /var/www/extsuite/ 目录下

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# unzip extmail.zip > /dev/null
[root@localhost html]# for i in $(ls *.tar.gz);do tar -xf $i ;done
[root@localhost html]# ls
extmail-1.2         extmail.zip  extman-1.1.tar.gz  Unix-Syslog-1.1.tar.gz
extmail-1.2.tar.gz  extman-1.1   Unix-Syslog-1.1
[root@localhost html]# mkdir /var/www/extsuite
[root@localhost html]# cp -r extmail-1.2 /var/www/extsuite/extmail
[root@localhost html]# cp -r extman-1.1 /var/www/extsuite/extman

​ (3)将成品数据库文件导入mysql

[root@localhost html]# cd /var/www/extsuite/
[root@localhost extsuite]# vim /var/www/extsuite/extman/docs/extmail.sql 				#删除文件中的数据库存储引擎类型,版本兼容问题
[root@localhost extsuite]# grep "TYPE" /var/www/extsuite/extman/docs/extmail.sql
[root@localhost extsuite]# mysql < extman/docs/extmail.sql 								#导入
[root@localhost extsuite]# vim /var/www/extsuite/extman/docs/init.sql 
[root@localhost extsuite]# grep "123456" /var/www/extsuite/extman/docs/init.sq			#更改数据库密码
/* root@extmail.org password is 123456 */
INSERT INTO `manager` VALUES ('root@extmail.org','123456','admin','root','Supe
[root@localhost extsuite]# mysql < extman/docs/init.sql 								#导入

​ (4)将模板拷贝到邮件服务器主目录下

注意:为了安全,最后配置完成后,删除网页主目录下无用的配置文件

[root@localhost extsuite]# cp -r extman/docs/mysql_virtual_* /etc/postfix/
[root@localhost extsuite]# ll /etc/postfix/mysql_virtual_*
-rw-r--r-- 1 root root 166 11月 10 23:30 /etc/postfix/mysql_virtual_alias_maps.cf
-rw-r--r-- 1 root root 168 11月 10 23:30 /etc/postfix/mysql_virtual_domains_maps.cf
-rw-r--r-- 1 root root 170 11月 10 23:30 /etc/postfix/mysql_virtual_limit_maps.cf
-rw-r--r-- 1 root root 172 11月 10 23:30 /etc/postfix/mysql_virtual_mailbox_maps.cf
-rw-r--r-- 1 root root 173 11月 10 23:30 /etc/postfix/mysql_virtual_sender_maps.cf

​ (5)创建映射用户

​ 改postfix配置文件 /etc/postfix/main.cf

[root@localhost ~]# useradd -u 10086 -s /sbin/nologin vmail
[root@localhost ~]# vim /etc/postfix/main.cf 
inet_interfaces = all					#取消注释成这样
#inet_interfaces = localhost			#注释成这样
virtual_mailbox_base = /home/vmail		#最后添加的6行
virtual_uid_maps = static:10086
virtual_gid_maps = static:10086
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

​ (6)启动postfix、发送邮件、进入vmail家目录进行验证

[root@localhost ~]# systemctl restart postfix
[root@localhost ~]# systemctl enable postfix
[root@localhost ~]# echo "hello YQ..." | mail -s YQtest support@extmail.org		      #发送邮件
[root@localhost ~]# cat /home/vmail/
.bash_logout   .bash_profile  .bashrc        extmail.org/   
[root@localhost ~]# cat /home/vmail/extmail.org/postmaster/Maildir/new/1668094859.Vfd00I10e9aebM367072.localhost.localdomain 
。。。																					#验证到家目录下有新收到的邮件
hello YQ...

2.接收方配置(本次实验仍在7-1(201)中)

​ (1)安装dvecot

[root@localhost ~]# yum -y install dovecot dovecot-devel dovecot-mysql

​ (2)配置dovecot的配置文件,使其能读取数据库

​ 1)修改10-mail.conf

[root@localhost ~]# vim /etc/dovecot/conf.d/10-mail.conf 		#修改成以下两项
mail_location = maildir:/home/vmail/%d/%n/Maildir
first_valid_uid = 10086

​ 拓展:

%d%n%u
不带域的用户名带域的用户名

​ 2)修改10-auth.conf

[root@localhost ~]# vim /etc/dovecot/conf.d/10-auth.conf 		#调用auth-sql.conf.ext
!include auth-sql.conf.ext

​ 3)生成模板配置文件 /etc/dovecot/dovecot-sql.conf.ext ,并配置数据库连接

[root@localhost ~]# cp -a /usr/share/doc/dovecot-2.0.9/example-config/dovecot-sql.conf.ext    /etc/dovecot/
[root@localhost ~]# vim /etc/dovecot/dovecot-sql.conf.ext 					#修改以下五项
driver = mysql																		#驱动类型
connect = host=localhost dbname=extmail user=extmail password=extmail				#连接
default_pass_scheme = MD5															#加密类型
password_query = SELECT username, domain, password FROM mailbox WHERE username = '%u' AND domain = '%d'				#密码验证
user_query = SELECT maildir, 10086 AS uid, 10086 AS gid FROM mailbox WHERE username = '%u'							#用户查找

​ (3)重启dovecot、利用 telnet 验证

[root@localhost ~]# systemctl restart dovecot
[root@localhost ~]# systemctl enable dovecot
[root@localhost ~]# yum -y install telnet > /dev/null
[root@localhost ~]# telnet localhost 110					#telnet验证
Trying ::1...
Connected to localhost.										
Escape character is '^]'.
+OK Dovecot ready.
user postmaster@extmail.org									#输入用户
+OK	
pass extmail												#输入密码
+OK Logged in.
retr 1														#查看第一个邮件

hello YQ...
.

3.MAIL+WEB页面

​ (1)更改httpd主配置文件

声明网页主目录;声明别名;声明脚本别名;suexecusergroup:能切换到映射用户

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 			#直接在最后新增标签,调用虚拟主机,此时原本网页主目录不生效
<VirtualHost *:80>
    DocumentRoot /var/www/extsuite/extmail/html
    ServerName mail.extmail.org
    scriptalias /extmail/cgi /var/www/extsuite/extmail/cgi
    alias /extmail /var/www/extsuite/extmail/html
    scriptalias /extman/cgi /var/www/extsuite/extman/cgi
    alias /extman /var/www/extsuite/extman/html
    suexecusergroup vmail vmail
</VirtualHost>

​ (2)extmail 目录中修改cgi 所有者、所属组,并配置相关选项(邮件存放目录、加密类型、数据库用户名、密码)

[root@localhost ~]# chown -R vmail:vmail /var/www/extsuite/extmail/cgi
[root@localhost ~]# cp -a /var/www/extsuite/extmail/webmail.cf.default /var/www/extsuite/extmail/webmail.cf
[root@localhost ~]# vim /var/www/extsuite/extmail/webmail.cf		#配置相关选项(邮件存放目录、加密类型、数据库用户名、密码)	
SYS_MAILDIR_BASE = /home/vmail
SYS_CRYPT_TYPE = plain
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail

​ (3)extman 目录中修改cgi 所有者、所属组,并配置相关选项(邮件存放目录、SESS目录、取消登录验证码、加密类型)

[root@localhost ~]# chown -R vmail:vmail /var/www/extsuite/extman/cgi
[root@localhost ~]# cp -a /var/www/extsuite/extman/webman.cf.default /var/www/extsuite/extman/webman.cf
[root@localhost ~]# vim /var/www/extsuite/extman/webman.cf			#配置相关选项(邮件存放目录、SESS目录、取消登录验证码、加密类型)
SYS_MAILDIR_BASE = /home/vamil
SYS_SESS_DIR = /tmp
SYS_CAPTCHA_ON = 0
SYS_CRYPT_TYPE = plain

​ (4)取消网页 /var/www/extmail/cgi/index.cgi 中的 -T

[root@localhost ~]# vim /var/www/extsuite/extmail/cgi/index.cgi
#!/usr/bin/perl -w

为了解决登陆后出现的问题:

image-20221111004907412

​ (5)安装Unix-Syslog软件

[root@localhost ~]# cd /var/www/html/Unix-Syslog-1.1/
[root@localhost Unix-Syslog-1.1]# perl Makefile.PL
[root@localhost Unix-Syslog-1.1]# make
[root@localhost Unix-Syslog-1.1]# make install

perl Makefile.PL && make && make install

​ (6)重启所有服务,加入自启动

[root@localhost ~]# systemctl restart httpd mariadb postfix dovecot
[root@localhost ~]# systemctl enable httpd mariadb postfix dovecot

浏览器测试:

1)虚拟机图形化:指向dns服务器,通过 www.extmail.org直接访问

image-20221111010226128

image-20221111010401025

2)真实机:hosts文件中域名指向邮件服务器ip

192.168.18.201	www.extmail.org

image-20221111010543156

image-20221111010619243