一. 邮件概述
电子邮件服务器是处理邮件交换的软硬件设施的总称,包括电子邮件程序、电子邮箱等。为用户提供基于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服务器
- 将准备好的软件包导入虚拟机
发送方配置
- 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
-
将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 *
-
将成品数据库文件导入到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/
- 创建映射用户&修改配置文件
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 邮件名
接收方配置
-
安装dovecot相关软件
yum -y install dovecot dovecot-devel dovecot-mysql systemctl enable --now dovecot
-
配置dovecot能够去数据库里读数据
-
修改
/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
-
修改
/etc/dovecot/conf.d/10-auth.conf
vim /etc/dovecot/conf.d/10-auth.conf !include auth-sql.conf.ext # 取消调用数据库的记录注释
-
修改数据库连接配置文件(需要拷贝模板生成)
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'
-
-
重启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页面
-
修改/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
-
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密码
-
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';
#改项目只可以在互联网上给别人发邮件

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?