一、邮件概述
电子邮件服务器是处理邮件交换的软硬件设施的总称,包括电子邮件程序,电子邮箱等,为用户提供基于E-mail服务的电子邮件系统,人民通过访问服务器实现邮件的交换。

常见的邮件服务器:
| 类型 | 名称 | 特点 |
| 服务器端 | Sendmail | 资格最古老运行稳定但安全性欠佳 |
| Postfix | 采用模块化设计,在投递效率,稳定性,性能及安全性方面表现优秀,sendmail保持足够的兼容性 | |
| Qmail | 采用模块化设计,速度快,执行效率高,配置稍微复杂点 | |
| 客户端 | Outlook | 都是用来收邮件的客户端 |
| Foxmail | ||
| 浏览器 |
二、邮件应用协议
SMTP简单邮件传输协议(发邮件)TCP 25端口,加密时使用TCP 465端口
POP3第三版邮局协议(收邮件)TCP 110端口,加密时使用TCP995端口
IMAP4第四版互联网邮件访问协议(收邮件)TCP 143端口,加密时使用TCP993端口

三、软件相关
// 软件名:Postfix// 主目录:/etc/postfix// 主配置文件:main.cfmyhostname:#邮件服务器主机名mydomain:#邮件域myorigin:#设置允许发信的用户的邮件域mydestination:#设置允许收信的用户的邮件域#官方地址:http://www.extmail.org/#实例网站:http://mail.extmail.org/
四、企业级邮件服务
前提条件:要有一个DNS服务器,将准备的软件包导入虚拟机
——>发送方配置<——
1、DNS搭建
[root@server21 ~]# yum install -y bind[root@server21 ~]# vim /etc/named.confoptions {listen-on port 53 { 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";allow-query { any; }; #允许所有recursion yes;#修改监听地址和访问控制为any[root@server21 ~]# vim /etc/named.rfc1912.zoneszone "extmail.org" IN {type master;file "extmail.localhost";allow-update { none; };};#使用extmail.org作为解析域,只保留正向解析即可[root@server21 ~]# cp -a /var/named/named.localhost /var/named/extmail.localhost[root@server21 ~]# vim /var/named/extmail.localhost#修改数据文件,如下$TTL 1D@ IN SOA extmail.org. rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS dns.extmail.org.MX 3 mail.extmail.org.dns A 20.20.20.21mail A 20.20.20.21[root@server21 ~]# chkconfig named on[root@server21 ~]# service named start #能启动起来说明没有问题Generating /etc/rndc.key: [ OK ]Starting named: [ OK ]#安装nslookup[root@server21 ~]# yum provides nslookup #查询nslookup在哪个套件里面[root@server21 ~]# yum install bind-utils #安装成功#若是解析不了,先关闭本机配置的dns解析文件[root@server21 ~]# vim /etc/resolv.conf#nameserver 114.114.114.114#nameserver 8.8.8.8[root@server21 ~]# nslookup mail.extmail.orgServer: 127.0.0.1Address: 127.0.0.1#53Name: mail.extmail.orgAddress: 20.20.20.21
在另一台上使用nslookup测试dns是否能解析
2、安装gcc以及其他依赖软件
[root@server21 ~]# yum install -y gcc* mysql-server mysql httpd mailx#启动MySQL(apache)并设置开机自启[root@server21 ~]# chkconfig mysqld on[root@server21 ~]# chkconfig httpd on[root@server21 ~]# service mysqld start[root@server21 ~]# service httpd start
3、将web页面放在apache的网页目录下
#将extmail.zip包上传到服务器中[root@server21 ~]# mkdir -p /var/www/extsuite#创建一个单独的目录[root@server21 ~]# unzip extmail.zip[root@server21 ~]# cd extmail[root@server21 extmail]# tar -xf extmail-1.2.tar.gz -C /var/www/extsuite/[root@server21 extmail]# tar -xf extman-1.1.tar.gz -C /var/www/extsuite/#将extmail和extman解压到创建的目录中[root@server21 extmail]# cd /var/www/extsuite[root@server21 extsuite]# mv extmail-1.2 extmail[root@server21 extsuite]# mv extman-1.1 extman[root@server21 extsuite]# lldrwxr-xr-x 9 500 500 4096 Feb 4 09:53 extmaildrwxr-xr-x 11 500 500 4096 Dec 24 2009 extman[root@server21 extsuite]# chown -R root.root *[root@server21 extsuite]# lldrwxr-xr-x 9 root root 4096 Feb 4 09:53 extmaildrwxr-xr-x 11 root root 4096 Dec 24 2009 extman#将两个解压后的目录去掉版本号,并修改文件归属
4、将成品数据库文件导入到MySQL中*(没设置密码,空密码登录)
[root@server21 extsuite]# cd /var/www/extsuite/[root@server21 extsuite]# mysql < ./extman/docs/extmail.sql[root@server21 extsuite]# vim ./extman/docs/init.sqlLOCK TABLES `manager` WRITE;INSERT INTO `manager` VALUES ('root@extmail.org','123456','admin','root','Super User','my question','my answer','0','2007-02-14 15:10:04','2010-11-08',1); #将$1$BrT9qxfB$Ha81Mb5YVV6rNKNN5jmtj1修改为123456,其实是一个密码UNLOCK TABLES;#将此文件中该位置的密码修改为123456,切记先修改,再导入[root@server21 extsuite]# mysql < ./extman/docs/init.sql
5、将邮件模板拷贝到邮件服务器的主目录下
[root@server21 extsuite]# cd /var/www/extsuite/extman/docs/[root@server21 docs]# cp -a mysql_virtual_alias_maps.cf mysql_virtual_domains_maps.cf mysql_virtual_mailbox_maps.cf /etc/postfix/
6、创建映射用户&修改配置文件
[root@server21~]# useradd -u 600 -s /sbin/nologin vmail[root@server21 ~]# vim /etc/postfix/main.cfinet_interfaces = all #将此选项取消注释#inet_interfaces = localhost #将此选项注释掉#在尾部添加下列内容 #大写G切换到最后virtual_mailbox_base = /home/vmailvirtual_uid_maps = static:600virtual_gid_maps = static:600virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cfvirtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cfvirtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
7、重启服务&发送邮件测试&查看结果

[root@server21 ~]# service postfix restart[root@server21 ~]# chkconfig --list postfix #默认是开机自启的postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off[root@server21 ~]# echo "hello" | mail -s test support@extmail.org #发送hello给support这个邮箱[root@server21 ~]# cat /home/vmail/extmail.org/postmaster/Maildir/new/1612406352.V803I4412f5M82499.server21Return-Path: <root@server21.localdomain>X-Original-To: support@extmail.orgDelivered-To: postmaster@extmail.orgReceived: by server21.localdomain (Postfix, from userid 0)id 10930480A19; Thu, 4 Feb 2021 10:39:12 +0800 (CST)Date: Thu, 04 Feb 2021 10:39:11 +0800To: support@extmail.orgSubject: test #主题是testUser-Agent: Heirloom mailx 12.4 7/29/08MIME-Version: 1.0Content-Type: text/plain; charset=us-asciiContent-Transfer-Encoding: 7bitMessage-Id: <20210204023912.10930480A19@server21.localdomain>From: root@server21.localdomain (root) #来自于哪个邮箱地址hello #内容
——>接收方配置<——
1、安装dovecot相关软件
[root@server21 ~]# yum install -y dovecot dovecot-devel dovecot-mysql[root@server21 ~]# chkconfig dovecot on[root@server21 ~]# service dovecot start
2、配置dovecot能够去数据库里读数据
// 1、修改/etc/dovecot/conf.d/10-mail.conf// 在配置文件中增加下列两行[root@server21 ~]# vim /etc/dovecot/conf.d/10-mail.confmail_location = maildir:/home/vmail/%d/%n/Maildir #定义dovecot查询邮件的位置(顶头写)first_valid_uid = 600// 2、修改/etc/dovecot/conf.d/10-auth.conf[root@server21 ~]# vim /etc/dovecot/conf.d/10-auth.conf!include auth-system.conf.ext!include auth-sql.conf.ext #取消调用数据库的记录注释// 3、修改数据库连接配置文件(需要拷贝模板生成)[root@server21 ~]# cp -a /usr/share/doc/dovecot-2.0.9/example-config/dovecot-sql.conf.ext /etc/dovecot/[root@server21 ~]# vim /etc/dovecot/dovecot-sql.conf.ext #将下列内容加入配置文件即可driver = mysql#驱动类型connect = host=localhost dbname=extmail user=extmail password=extmail#连接数据库信息default_pass_scheme = MD5password_query = \SELECT username, domain, password \FROM mailbox WHERE username = '%u' AND domain = '%d'#验证登录密码的查询命令user_query = SELECT maildir, 600 AS uid, 600 AS gid FROM mailbox WHERE username = '%u'#查询虚拟用户对应的邮箱目录
3、重启dovecot验证是否能连接
// 安装Telnet客户端进行登录验证[root@server21 ~]# service dovecot restart[root@server21 ~]# yum install -y telnet[root@server21 ~]# netstat -antptcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 2962/dovecot[root@server21 ~]# telnet mail.extmail.org 110Trying 20.20.20.21...Connected to mail.extmail.org.Escape character is '^]'.+OK Dovecot ready. #登录成功;在此基础下执行命令user postmaster@extmail.org #登录postmaster用户+OKpass extmail #密码是extmail;若是可以连接数据库说明没有问题+OK Logged in.retr 1 #查看第一封邮件+OK 560 octetsReturn-Path: <root@server21.localdomain>X-Original-To: support@extmail.orgDelivered-To: postmaster@extmail.orgReceived: by server21.localdomain (Postfix, from userid 0)id 37705480A19; Thu, 4 Feb 2021 09:41:44 +0800 (CST)Date: Thu, 04 Feb 2021 09:41:44 +0800To: support@extmail.orgSubject: testUser-Agent: Heirloom mailx 12.4 7/29/08MIME-Version: 1.0Content-Type: text/plain; charset=us-asciiContent-Transfer-Encoding: 7bitMessage-Id: <20210204014144.37705480A19@server21.localdomain>From: root@server21.localdomain (root)hello.quit+OK Logging out. #登出Connection closed by foreign host.
五、MAIL+WEB页面
1、修改/etc/httpd/conf/httpd.conf配置文件,能加载邮件web页面
[root@server21 ~]# vim /etc/httpd/conf/httpd.confNameVirtualHost *:80#取消注释,开启虚拟主机功能# 添加以下内容<VirtualHost *:80>DocumentRoot /var/www/extsuite/extmail/htmlServerName mail.extmail.orgscriptalias /extmail/cgi /var/www/extsuite/extmail/cgialias /extmail /var/www/extsuite/extmail/htmlscriptalias /extman/cgi /var/www/extsuite/extman/cgialias /extman /var/www/extsuite/extman/htmlsuexecusergroup vmail vmail</VirtualHost>[root@server21 ~]# httpd -tSyntax OK[root@server21 ~]# service httpd restart
2、extmail目录中更改cgi的属组属主,让vmail有权限执行
[root@server21 ~]# cd /var/www/extsuite/extmail/[root@server21 extmail]# chown -R vmail.vmail cgi/[root@server21 extmail]# cp -a webmail.cf.default webmail.cf[root@server21 extmail]# vim webmail.cfSYS_MAILDIR_BASE = /home/vmail #邮件存放目录SYS_CRYPT_TYPE = plain #加密类型SYS_MYSQL_USER = extmail #mysql用户名SYS_MYSQL_PASS = extmail #mysql密码
3、extman中更改cgi的属组属主,让vmail有权限执行
[root@server21 extmail]# cd /var/www/extsuite/extman[root@server21 extman]# chown -R vmail.vmail cgi/[root@server21 extman]# cp -a webman.cf.default webman.cf[root@server21 extman]# vim webman.cfSYS_MAILDIR_BASE = /home/vmailSYS_SESS_DIR = /tmpSYS_CAPTCHA_ON = 0SYS_CRYPT_TYPE = plain
4、安装Unix-Syslog软件日志管理工具
// 解压缩Unix-Syslog-1.1.tar.gz软件[root@server21 ~]# cd extmail[root@server21 extmail]# tar -zxvf Unix-Syslog-1.1.tar.gzroot@server21 extmail]# cd Unix-Syslog-1.1[root@server21 Unix-Syslog-1.1]# perl Makefile.PL#报错信息Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 1.BEGIN failed--compilation aborted at Makefile.PL line 1.#解决方案[root@server21 Unix-Syslog-1.1]# yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker #安装依赖[root@server21 Unix-Syslog-1.1]# perl Makefile.PLChecking if your kit is complete...Looks goodWriting Makefile for Unix::Syslog[root@server21 Unix-Syslog-1.1]# make && make install
5、在浏览器上访问,windows测试需要手动指向dns服务器
//配置hosts文件C:\Windows\System32\drivers\etc20.20.20.21 mail.extmail.org
在Chrome下登入:http://mail.extmail.org;用户名:postmaster 密码:extmail 

=================================END==================================
辅助文本
三、软件相关
// 软件名:Postfix// 主目录:/etc/postfix// 主配置文件:main.cfmyhostname:#邮件服务器主机名mydomain:#邮件域myorigin:#设置允许发信的用户的邮件域mydestination:#设置允许收信的用户的邮件域
四、企业级邮件服务
前提条件:要有一个DNS服务器,将准备的软件包导入虚拟机
发送方配置
1、DNS搭建
yum install -y bindvi /etc/named.conf#修改监听地址和访问控制为anyvi /etc/named.rfc1912.zones#使用extmail.org作为解析域,只保留正向解析即可vi /var/named/extmail.locahost#修改数据文件,如下NS dns.extmail.orgMX3 mail.extmail.orgdns A 192.168.88.10mail A 192.168.88.10
在另一台上使用nslookup测试dns是否能解析
2、安装gcc以及其他依赖软件
yum install -y gcc* mysql-server mysql httpd mailx#启动MySQL(apache)并设置开机自启chkconfig mysqld(httpd)onservice mysqld(httpd)start
3、将web页面放在apache的网页目录下
mkdir -p /var/www/extsuite#创建一个单独的目录tar -xf extmail-1.2.tar.gz -C /var/www/extsuite/tar -xf extman-1.1.tar.gz -C /var/www/extsuite/#将extmail和extman解压到创建的目录中cd /var/www/extsuitemv extmail-1.2/extmailmv extman-1.1/extmailchown -R root.root*#将两个解压后的目录去掉版本号,并修改文件归属
4、将成品数据库文件导入到MySQL中*(没设置密码,空密码登录)
cd /var/www/extsuite/mysql< ./extman/docs/extmail.sql#将./extman/docs/init.sqlINSERT INTO 'manager'VALUES('root@extmail.org','123456','admin','root')#将此文件中该位置的密码修改为123456,切记先修改,再导入mysql < ./extman/docs/init.sql
5、将邮件模板拷贝到邮件服务器的主目录下
cd /var/www/extsuit/extman/docs/cp -a mysql_virtual_alias_maps.cf mysql_virtual_domains_maps.cf mysql_virtual_mailbox_maps.cf /etc/postfix/
6、创建映射用户&修改配置文件
useradd -u 600 -s /sbin/nologin vmailvim /etc/postfix/main.cfinet_interfaces = all #将此选项取消注释#inet_interfaces = localhost #将此选项注释掉#在尾部添加下列内容virtual mailbox base = /home/vmailvirtaul uid maps = static:600virtaul_gid_maps = static:600virtaul alias maps = mysql:/etc/postfix/mysql virtaul alias maps.cfvirtaul_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cfvirtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
7、重启服务&发送邮件测试&查看结果
service postfix restartecho "hello: |mail -s test support@extmail.orgls /home/vmial/extmail.org/postmaster/Maildir/new/
接收方配置
1、安装dovecot相关软件
yum install -y dovecot dovecot-devel dovecot-mysqlchkconfig dovecot onservice dovecot start
2、配置dovecot能够去数据库里读数据
// 1、修改/etc/dovecot/conf.d/10-mail.conf// 在配置文件中增加下列两行mail_location = maildir:/home/vmail/%d/%n/Maildir #定义dovecot查询邮件的位置(定头写)first_valid_uid = 600// 2、修改/etc/dovecot/conf.d/10-auth.conf!include auth-sql.conf.ext #取消调用数据库的记录注释// 3、修改数据库连接配置文件(需要拷贝模板生成)cp -a /usr/share/doc/dovecot-2.0.9/example-config/dovecot-sql.conf.ext/etc/dovecot/vim dovecot-sql.conf.ext #将下列内容加入配置文件即可driver = mysql #驱动类型connect = host=localhost dbname=extmail user=extmail password=extmail #连接数据库信息default_pass_scheme = MD5password_query =\SELECT username, domain,password\FROM mailbox WHERE usename = '%u'AND domain = '%d' #验证登录密码的查询命令user_query = SELECT maildir, 600 AS uid, 600 AS gid FROM mailbox WHERE username = '%u' #查询虚拟用户对应的邮箱目录
3、重启dovecot验证是否能连接
// 安装Telnet客户端进行登录验证yum install -y telnettelnet mail.extmail.org 110user postmaster@extmail.org #登录postmaster用户pass extmail #密码是extmailretr 1 #查看第一封邮件
五、MAIL+WEB页面
1、修改/etc/httpd/conf/httpd.conf配置文件,能加载邮件web页面
Name VirtualHost*:80 #取消注释,开启虚拟主机功能// 添加以下内容<VirtualHost*:80>DocumentRoot /var/www/extsuite/extmail/htmlServerName mail.extmail.orgscriptalias /extmail/cgi/var/www/extsuite/extmail/cgialias /extmail/var/www/extsuite/extmail/htmlscriptalias /extman/cgi/var/www/extsuite/extman/cgialias /extman /var/www/extsuite/extman/htmlsuexecusergroup vmail vmail</VirtualHost>
2、extmail目录中更改cgi的属组属主,让vmail有权限执行
chown -R vmail.vmail cgi/cp -a webmail.cf.default webmail.cfvim webmail.cfSYS_MAILDIR_BASE = /home/vamil #邮件存放目录SYS_CRYPT_TYPE = plain #加密类型SYS_MYSQL_USER = extmail #mysql用户名SYS_MYSQL_PASS = extmail #mysql密码
3、extman中更改cgi的属组属主,让vmail有权限执行
chown -R vmail.vmail cgi/cp -a webman.cf.default webman.cfvim webman.cfSYS_MAILDIR_BASE = /home/vmailSYS_SESS_DIR = /tmpSYS_CAPTCHA_ON = 0SYS_CRYPT_TYPE = plain
4、安装Unix-Syslog软件
// 解压缩Unix-Syslog-1.1.tar.gz软件cd Unix-Syslog-1.1perl Makefile.PLmakemake install
5、在浏览器上访问,windows测试需要手动指向dns服务器
END
声明:JavaBBS论坛主要用于IT技术专题的交流学习,为开源技术爱好者提供广泛、权威的技术资料。若您在技术专题有更好的想法或者建议,欢迎交流!!!




推荐阅读
Recommended reading


JavaBBS
Git → https://www.javabbs.cn/git
JavaBBS大数据→ https://www.javabbs.cn/dsj
JavaBBS云存储→ https://www.javabbs.cn/ycc
JavaBBS数据库→ https://www.javabbs.cn/sjk
JavaBBS云计算→ https://www.javabbs.cn/yjs
JavaBBSIT.Log→ https://www.javabbs.cn/itl
JavaBBSNginx→ https://www.javabbs.cn/ngx
JavaBBSzabbix→ https://www.javabbs.cn/zbx
JavaBBSJavaSE→ https://www.javabbs.cn/jse JavaBBS社区文章→ https://www.javabbs.cn/bwz
JavaBBS社区资料→ https://www.javabbs.cn/bzl





