Linux邮件服务器搭建实验

爷,独闯天下 提交于 2020-11-02 12:57:56

Linux邮件服务器搭建实验

前言

本文重点在于后面的搭建过程,前面会简单介绍邮件服务原理与工作流程,如果有什么错误或遗漏的地方,欢迎大家指正批评,谢谢。

基本理论说明

电子邮件服务器是处理邮件交换的软硬件设施的总称,包括电子邮件程序、电子邮箱等。它是为用户提供基于 E-mail 服务的电子邮件系统,人们通过访问服务器实现邮件的交换。同时邮件具有法律效益,可以提供证明,即时通讯软件则无法做到这一点,有些公司为了信息安全,会在内部搭建邮件服务。

常见的邮件服务器

Sendmail、Qmail、Postfix、Zmailer、Exchange(MS)、Notes/Domino(IBM)
、Coremail、U-Mail、盈世。

邮件服务器组成

电子邮件系统有很多部分组成,下面简单介绍其中四种。

MUA(邮件用户代理)

指的就是如Foxmail,outlook,等邮件客户端程序。

MTA (邮件传输代理)

MTA(Mail Transfer Agent),MTA就是“邮件传输代理”的意思,MTA是用在邮件主机上的软件,它也是主要的邮件服务器。MTA主要功能如下,接收外部主机寄来的信件,帮用户发(寄出)信,MTA会将信件送给目的地的MTA而不是目的地的MUA。常见MTA软件Postfix、Coremail、Sendmail等。
MDA(邮件分发代理)

MDA(Mail Delivery Agent),“邮件分发代理”主要的功能就是将MTA接收的信件依照信件的流向(送到哪里)将该信件放置到本机账户下的邮件文件中(收件箱),或者再经 由MTA将信件送到下个MTA。如果信件的流向是到本机,这个邮件代理的功能就不只是将由MTA传来的邮件放置到每个用户的收件箱,它还可以具有邮件过滤 (filtering)与其他相关功能,常见MDA软件:maildrop
MRA(邮件获取代理)

MRA(Mail Retrieval Agent)替用户去获取自己的邮件 ,“邮件获取代理”提求了使MUA 可以远程获取电子邮件的效劳,如qpoper、cyrus-imap、courier-imap、dovecot 等,为了使得邮件存取格式兼容,正在MRA 顺序中经常都提求了邮件投递代理顺序MDA。MRA 运用的协议有POP3 和IMAP4 等。POP3 可以运用户从效劳器下载邮件并离线阅读。IMAP4 运用于那些没有外地信箱的用户,具有远程操作信箱的才干。IMAP4 容许多个客户机器同时访问一个信箱。

所用协议

发送协议 MUA 》 MTA

SMTP:简单邮件传输协议,TCP 25 端口,加密时使用 TCP 465 端口

接收协议 MUA 》 MRA

POP3:第三版邮局协议,TCP 110 端口,加密时使用 TCP 995 端口
IMAP4:第四版互联网消息访问协议,TCP 143端口,加密时使用 TCP 993 端口

实验步骤

实验目的:掌握基础邮件服务架构搭建。

实验准备:C6标准试验机一台(防火墙与selinux已关闭)

实验规划:192.168.10.14 (邮件服务器)

​ 192.168.10.15(访问测试)

实验相关安装包:邮件服务

ps:标准虚拟机安装见网络阶段Centos6安装指南

一、配置DNS服务

yum install -y bind

编辑主配置文件

vim /etc/named.conf

修改为接受所有地址访问

编辑区域文件

vim /etc/named.rfc1912.zones

配置正向解析与反向解析区域

zone "extmail.org." IN {
   
   
        type master;
        file "extmail.zheng";
        allow-update {
   
    none; };
};


zone "10.168.192.in-addr.arpa" IN {
   
   
        type master;
        file "extmail.fan";
        allow-update {
   
    none; };
};

创建解析文件

cd /var/named/
cp -a named.localhost extmail.zheng
cp -a named.loopback extmail.fan

正向文件配置

vim extmail.zheng
$TTL 1D
@       IN SOA  extmail.org. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.extmail.org.
        MX  3   mail.extmail.org.
mail    A       192.168.10.14
dns     A       192.168.10.14

反向文件解析

vim extmail.fan
$TTL 1D
@       IN SOA  extmail.org. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.extmail.org.
        MX   3  mail.extmail.org.
14      PTR     dns.extmail.org.
14      PTR     mail.extmail.org.

启动服务,设置为开机自启,测试DNS是否配置成功。

service named start
chkconfig named on
echo "DNS1=192.168.10.14" >> /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart
nslookup

测试通过,正向解析与反向解析均设置成功。

二、配置MySQL服务

yum install mysql mysql-server mailx httpd -y

启动服务并设为开机自启

service mysqld start
chkconfig mysqld on

设置初始化密码

mysqladmin -uroot password 123

连接数据库测试

mysql -uroot -p123

数据库设置完毕。

三、配置Apache服务

yum -y install httpd lrzsz

创建邮件服务网页文件目录

mkdir /var/www/extsuite

准备extmail安装镜像(上方有下载链接),创建挂载目录,挂载安装镜像。

mkdir /mnt/iso
mount -o loop EXTMAIL.iso /mnt/iso/

将镜像内所有文件拷贝至root目录

cd
cp -a /mnt/iso/* .

将文件解压至对应目录

tar -zxf extmail-1.2.tar.gz -C /var/www/extsuite/
tar -zxf extman-1.1.tar.gz -C /var/www/extsuite/

简化目录名称,方便访问。

cd /var/www/extsuite/
mv extmail-1.2 extmail
mv extman-1.1 extman

进行管理员配置,生成加密密码。

grub-md5-crypt

将管理员密码替换为生成的加密密码。

vim init.sql

将两个数据库文件还原至数据库

mysql -uroot -p < extmail.sql
mysql -uroot -p < init.sql

四、配置POSTFIX服务

拷贝模版文件至指定位置

cp mysql_virtual_alias_maps.cf mysql_virtual_domains_maps.cf mysql_virtual_mailbox_maps.cf /etc/postfix/

配置指定用户

useradd -u 600 vmail
postconf -e inet_interfaces=all
postconf -e virtual_mailbox_base=/home/vmail
postconf -e virtual_uid_maps=static:600
postconf -e virtual_gid_maps=static:600

配置模版文件,启动服务。

postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql_virtual_alias_maps.cf
postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql_virtual_domains_maps.cf
postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
service postfix restart

进行邮件发送测试

echo "hello world" | mail -s test support@extmail.org

进入指定文件查看

cd /home/vmail/
cat extmail.org/postmaster/Maildir/new/*localdomain

成功接收到邮件

五、配置MRA服务

下载dovecot与mysql 结合使用工具

yum install dovecot dovecot-mysql -y

编辑dovecot磁盘路径相关配置

cd /etc/dovecot/conf.d/
vim 10-mail.conf
#修改24行
mail_location = maildir:/home/vmail/%d/%n/Maildir
#修改167行,指定运行用户uid
first_valid_uid = 600

保存退出

编辑dovecot用户验证相关配置信息

vim 10-auth.conf

取消120行注释,使其通过数据库进行认证。

保存退出,返回上级目录,复制dovecot与MySQL结合配置文件至当前目录。

cp /usr/share/doc/dovecot-2.0.9/example-config/dovecot-sql.conf.ext  .

编辑Dovecot与数据库连接相关配置

vim dovecot-sql.conf.ext:
#修改29行
driver = mysql
#修改63行
connect = host=localhost dbname=extmail user=extmail password=extmail
#取消73行注释
defaulf_pass_scheme = MD5
#修改102行
password_query = \
  SELECT username, domain, password \
  FROM mailbox WHERE username = '%u' AND domain = '%d'
#修改120行
user_query = SELECT maildir, 600 AS uid, 600 AS gid FROM mailbox WHERE username = '%u'

保存退出,重启服务开始测试。

/etc/init.d/dovecot start

下载测试软件并进行连接测试

yum -y install telnet
telnet localhost 110
user postmaster@extmail.org
pass extmail
list
retr 1

成功连接。

六、配置wed界面

编辑Apache主配置文件

vim /etc/httpd/conf/httpd.conf

配置虚拟主机,取消990行注释,在文件末尾添加以下信息。

<VirtualHost *:80>
          ServerName mail.extmail.org
          DocumentRoot /var/www/extsuite/extmail/html/
          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>

编辑设置邮件wed页面文件

cd /var/www/extsuite/extmail
chown vmail.vmail cgi/ -R
cp webmail.cf.default webmail.cf

编辑主配置文件,完成基本设置。

vim wedmail.cf
#修改127行:(当前邮件目录)
SYS_MAILDIR_BASE = /home/vmail
#修改136行:(当前数据库密码存储方式)
SYS_CRYPT_TYPE = plain
#修改139、140行:(数据库名与密码)
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail

编辑设置邮件wed页面管理员配置文件

cd /var/www/extsuite/extman
chown vmail.vmail cgi/ -R
cp webman.cf.default webman.cf

编辑邮件wed页面管理员配置文件,完成基本设置。

vim webman.cf
#修改12行:(当前邮件目录)
SYS_MAILDIR_BASE = /home/vmail
#修改18行:(缓存目录)
SYS_SESS_DIR = /tmp/
#修改27行:(随机认证码长度)
SYS_CAPTCHA_LEN = 4
#修改124行:(当前数据库密码存储方式)
SYS_CRYPT_TYPE = plain

七、访问测试。

1.邮件服务端设置

安装缺失依赖

cd
yum install *CGI  perl-GD gcc* -y
yum -y install perl-GD-2.44-3.el6.x86_64.rpm

安装日志创建组件

tar zxf Unix-Syslog-1.1.tar.gz
cd Unix-Syslog-1.1
perl Makefile.PL
make test
make install

创建存储目录

/var/www/extsuite/extman/daemon/cmdserver -d

重启Apache服务

service httpd restart

2.客户端配置

配置DNS,重启网卡。

echo "DNS1=192.168.10.14" >> /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart

进行解析测试

nslookup 192.168.10.14

成功解析,开启图形化界面,开始访问测试。

init 5

3.访问测试

打开浏览器,输入普通用户访问网址。

mail.extmail.org

输入测试账户与默认密码

测试账户
postmaster
默认密码
extmail

登陆成功

测试管理员登陆

mail.extmail.org/extman

输入设置好的密码

进行功能测试,进行邮件群发测试。

登陆测试用户,查看是否收到。

成功收到群发邮件,邮件服务搭建完毕。

本文于2020年10月31日由Vonmerlot重新整理。

转载需注明出处。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!