邮件服务器EXTMAIL的Linux搭建

一. 邮件概述

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

常见的邮件服务器和客户端

类型名称特点
服务器端Sendmail资格最古老,运行稳定,但安全性欠佳
服务器端Postfix采用模块化设计,在投递效率、稳定性、性能及安全性方面表现优秀,与sendmail保持足够的兼容性。
服务器端Qmail采用模块化设计,速度快、执行效率高,配置稍微复杂点
客户端Outlook用来收发邮件的客户端
客户端foxmail用来收发邮件的客户端
客户端浏览器用来收发邮件的客户端

二. 邮件应用协议

  • SMTP:简单邮件传输协议(发邮件),TCP 25端口,加密时使用TCP 465端口。
  • POP3:第三版邮局协议(收邮件),TCP 110端口,加密时使用TCP 995端口。
  • IMAP4:第四版互联网邮件访问协议(收邮件),TCP 143端口,加密时使用TCP 993端口。

三. 软件相关

  • 软件名:Postfix、Dovecot
  • 主目录:/etc/postfix
  • 主配置文件:main.cf
    • myhostname: 邮件服务器主机名
    • mydomain: 邮件域
    • myorigin: 设置允许发信的用户的邮件域
    • mydestination: 设置允许收信的用户的邮件域

四. 企业级邮件服务

前提条件

  • 要有一个DNS服务器
  • 将准备好的软件包导入虚拟机

发送方配置

  1. DNS搭建
    yum -y install bind
    vim /etc/named.conf
    #修改监听地址和访问控制为any
    listen-on port 53 { any; }; allow-query     { any; };
    vim /etc/named.rfc1912.zones
    zone "extmail.org" IN {
         type master;
         file "extmail.localhost";
         allow-update { none; };
    

};

使用extmail.org作为解析域,只保留正向解析即可

vim /var/named/extmail.localhost

修改数据文件,如下

NS dns.extmail.org.
MX 3 mail.extmail.org.
dns A 192.168.90.103
mail A 192.168.90.103

设置在本机dns解析

vim /etc/resolv.conf
nameserver 192.168.90.103

在本机上使用nslookup测试dns是否能解析。

2. **安装gcc以及其他依赖软件**
```bash
yum -y install gcc* mariadb-server mariadb httpd mailx perl-ExtUtils-MakeMaker perl-CGI*
# 启动MySQL(Apache)并设置开机自启
systemctl enable --now mariadb
  1. 将web页面放到Apache的网页目录下

    mkdir -p /var/www/extsuite
    unzip /root/extmail.zip
    tar -xf /root/extmail-1.2.tar.gz -C /var/www/extsuite/
    tar -xf /root/extman-1.1.tar.gz -C /var/www/extsuite/
    cd /var/www/extsuite
    cd ./extmail-1.2/cgi/
    vim index.cgi       #修改调用解析器的选项,把wT删除-T选项即可
    #!/usr/bin/perl -w
    
    cd ./extman-1.1/cgi/
    vim index.cgi       #修改调用解析器的选项,把wT删除-T选项即可
    #!/usr/bin/perl -w
    
    cd ../..
    mv extmail-1.2/ extmail
    mv extman-1.1/ extman
    chown -R root.root *
    
  2. 将成品数据库文件导入到MySQL中

    cd /var/www/extsuite/extman/docs/    #项目的说明文档
    vim extmail.sql                      #修改数据库文件
    TYPE=MyISAM COMMENT='ExtMail - Virtual Domains'   #删除这行存储引擎,因为数据库版本不识别
    vim init.sql                   #修改数据库文件把加密的root密码改成123456 
    INSERT INTO `manager` VALUES ('root@extmail.org','123456','admin','root',
     
    

mysql < extmail.sql #把连接数据库的文件传入数据库
mysql < init.sql


5. **将邮件模板拷贝到邮件服务器的主目录下**
```bash
cd /var/www/extsuite/extman/docs/
 cp -a mysql_virtual_alias_maps.cf mysql_virtual_domains_maps.cf mysql_virtual_mailbox_maps.cf /etc/postfix/
  1. 创建映射用户&修改配置文件

useradd -u 10086 -s /sbin/nologin vmail
vim /etc/postfix/main.cf
inet_interfaces = all # 将此选项取消注释
inet_interfaces = localhost # 将此选项注释掉

在尾部添加下列内容 用来让数据库识别虚拟用户

virtual_mailbox_base = /home/vmail
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


7. **重启服务&发送邮件测试&查看结果**
```bash
 systemctl restart postfix
 echo "hello"| mail -s test support@extmail.org
ls /home/vmail/extmail.org/postmaster/Maildir/new/
cat 邮件名

接收方配置

  1. 安装dovecot相关软件

    yum -y install dovecot dovecot-devel dovecot-mysql
    
    systemctl enable --now dovecot
    
  2. 配置dovecot能够去数据库里读数据

    1. 修改/etc/dovecot/conf.d/10-mail.conf

      vim /etc/dovecot/conf.d/10-mail.conf
      # 在配置文件中增加下列两行
      mail_location = maildir:/home/vmail/%d/%n/Maildir  #定义dovecot查询邮件的位置**
      # 定义dovecot查询邮件的位置(顶头写)
      first_valid_uid = 10086       #映射用户Uid
      
      
    2. 修改/etc/dovecot/conf.d/10-auth.conf

      vim /etc/dovecot/conf.d/10-auth.conf
      !include auth-sql.conf.ext  # 取消调用数据库的记录注释
      
    3. 修改数据库连接配置文件(需要拷贝模板生成)

      cp -a /usr/share/doc/dovecot-2.2.36/example-config/dovecot-sql.conf.ext /etc/dovecot/
      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验证是否能连接

    systemctl restart dovecot
    yum -y install telnet
    telnet mail.extmail.org 110
    user postmaster@extmail.org
    # 登录postmaster用户
    pass extmail # 密码是extmail
    retr 1
    # 查看第一封邮件
    

MAIL+WEB页面

  1. 修改/etc/httpd/conf/httpd.conf配置文件,能加载邮件web页面

    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 #把当前页面跳转到cgi
    scriptalias /extman/cgi /var/www/extsuite/extman/cgi
    alias /extman /var/www/extsuite/extman/html
    suexecusergroup vmail vmail           #切换可执行用户
    </VirtualHost>
    
    systemctl enable --now httpd
    
    
  2. extmail目录中更改cgi的属组属主,让vmail有权限执行

    cd /var/www/extsuite/extmail/
    chown -R vmail.vmail cgi/
    cp -a webmail.cf.default webmail.cf
    vim webmail.cf
    SYS_MAILDIR_BASE = /home/vmail # 邮件存放目录
    SYS_CRYPT_TYPE = plain # 加密类型
    SYS_MYSQL_USER = extmail # MySQL用户名
    SYS_MYSQL_PASS = extmail # MySQL密码
    
  3. extman中更改cgi的属组属主,让vmail有权限执行

    cd /var/www/extsuite/extman/
    chown -R vmail.vmail cgi/
    cp -a webman.cf.default webman.cf
    vim webman.cf
    SYS_MAILDIR_BASE = /home/vmail
    SYS_SESS_DIR = /tmp
    SYS_CAPTCHA_ON = 0 
    SYS_CRYPT_TYPE = plain   #生产环境中开启,实验环境无法显示校验码
    

1. 安装Unix-Syslog****软件

解压缩Unix-Syslog-1.1.tar.gz软件

cd Unix-Syslog-1.1
perl Makefile.PL
make &&  make install

2. 在浏览器上访问,windows测试需要手动指向dns服务器

 C:\Windows\System32\drivers\etc hosts
  192.168.90.103 mail.extmail.org

项目总结

   support@extmail.org   #数据库用户  
   postmaster@extmail.org  #邮件服务器用户
   #数据库用extmail登录 并切换 响应数据库 use extmail 进行查看
    SELECT username, domain, password FROM mailbox WHERE username = 'postmaster@extmail.org' AND domain = 'extmail.org';  
SELECT maildir, 10000 AS uid, 10000 AS gid FROM mailbox WHERE username = 'postmaster@extmail.org';
  #改项目只可以在互联网上给别人发邮件


![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b8141c696a1b4d61aa6d2661acdbf22b.jpeg#pic_center)

   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值