28 Linux-企业邮件部署-Postfix
28.1 邮件概述
电子邮件服务器是处理邮件交换的软硬件设施的总称,包括电子邮件程序、电子邮箱等。为用户提供基于 E-mail 服务的电子邮件系统,人们通过访问服务器实现邮件的交换。常见的邮件服务器
类型 | 名称 | 特点 |
---|---|---|
服务器端 | Sendmail | 资格最古老运行稳定,但安全性欠佳 |
服务器端 | Postfix | 采用模块化设计在投递效率、稳定性、性能及安全性方面表现优秀 与 sendmail 保持足够的兼容性。 |
服务器端 | Qmail | |
客户端 | Outlook | 接收邮件的客户端 |
客户端 | foxmail | 接收邮件的客户端 |
客户端 | 浏览器 | 接收邮件的客户端 |
28.2 邮件应用协议
协议 | 描述 |
---|---|
SMTP | 简单邮件传输协议(发邮件) TCP 25 端口,加密时使用 TCP 465 端口 |
POP3 | 第三版邮局协议(收邮件) TCP 110 端口,加密时使用 TCP 995 端口 |
IMAP4 | 第四版互联网邮件访问协议(收邮件) TCP 143 端口,加密时使用 TC P 993 端口 |
28.3 服务描述
软件名:Postfix
主目录:/etc/postfix
主配置文件:main.cf
myhostname: 邮件服务器主机名
mydomain: 邮件域
myorigin: 设置允许发信的用户的邮件域
mydestination: 设置允许收信的用户的邮件域
28.4 企业级邮件服务
28.4.1 发送方配置
1)DNS 搭建
yum -y install bind
vi /etc/named.conf
# 修改监听地址和访问控制为 any
vi etc/named.rfc1912.zones
# 使用 extmail.org 作为 解析域 只保留正向解析即可
vi /var/named/extmail.l oca lhost
# 修改数据文件 ,如下
NS dns.extmail.org
MX3 mail. extmail.org
dns A 192.168.88.10
mail A 192.168.88.10
在另一台上使用 nslookup 测试 dns 是否能解析
2)安装 gcc 以及其他依赖软件
yum -y install gcc* mysql-server mysql httpd mailx
# 启动MySQL Apache 并设置开机自启
chkconfig mysqld(httpd) on
service 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/extsuite
mv extmail-1.2/ extmail
mv extman-1.1/ extman
chown -R root.root *
# 将两个解压后的目录去掉版本号,并修改文件归属
4)将成品数据库文件导入到 MySQL中
cd /var/www/extsuite/
mysql < ./extman/docs/extmail.sql
# 将./extman/docs 中模板和数据导入到数据库中
vi ./extman/docs/init.sql
INSERT INTO `manager` VALUES (‘root@extmail.org’,’123456’,’admin’,’root’)
# 将此文件中该位置的密码修改为123456,切记先修改,再导入
mysql < ./extman/docs/init.sql
5)将 邮件 模板拷贝到邮件服务器的主目录下
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/
6)创建 映射用户 修改配置文件
useradd -u 600 -s /sbin/nologin vmail
vim /etc/postfix/main.cf
inet_interfaces = all # 将此选项取消注释
inet_interfaces = localhost # 将此选项注释掉
# 在尾部添加下列内容
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:600
virtual_gid_maps = static:600
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)重启服务发送邮件测试 查看结果
service postfix restart
echo "hello" | mail -s test support@extmail.org
ls /home/vmail/extmail.org/postmaster/Maildir/new/
28.4.2 接收方配置
1)安装dovecot 相关软件
yum -y install dovecot dovecot-devel dovecot-mysql
chkconfig dovecot on
service dovecot start
2)配置dovecot 能够去数据库里读数据
# 修改/etc/dovecot/conf.d/10-mail.conf
# 在配置文件中增加下列两行
mail_location = maildir:/home/vmail/%d/%n/Maildir #定义dovecot 查询邮件的位置(顶头写)
first_valid_uid = 600
# 修改/etc/dovecot/conf.d/10-auth.conf
!include auth-sql.conf.ext # 取消调用数据库的记录注释
# 修改数据库连接配置文件(需要拷贝模板生成)
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 = MD5
password_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 客户端进行登录验证
yum -y install telnet
telnet mail.extmail.org 110
user postmaster@extmail.org # 登录postmaster 用户
pass extmail # 密码是extmail
retr 1 # 查看第一封邮件
28.4.3 MAIL+WEB 页面
1)修改/etc/httpd/conf/httpd.conf 配置文件,能加载邮件web 页面
NameVirtualHost *:80 # 取消注释,开启虚拟主机功能
添加一下内容
<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 的属组属主,让vmail 有权限执行
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 有权限执行
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
4)安装Unix-Syslog 软件
# 解压缩Unix-Syslog-1.1.tar.gz 软件
cd Unix-Syslog-1.1
perl Makefile.PL
make
make install
5)在浏览器上访问,windows 测试需要手动指向dns 服务器
本文摘抄或总结其他笔记,笔记不涉及任何商业用途,如果侵权请及时联系处理