14 邮件传输服务器
1 介绍
| 协议 | SMTP | pop3 | imap | 其他 |
|---|---|---|---|---|
| 软件 | 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
为了解决登陆后出现的问题:

(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直接访问


2)真实机:hosts文件中域名指向邮件服务器ip
192.168.18.201 www.extmail.org

