linux运维学习笔记:邮件服务器系列之01:postfix + extmail
作者:周少言
201年 月 日 星期 ,于北京
声明:本博客是本人周少言在某培训机构学习期间所写,其中参考借鉴了他人的博客,本文将会选择性给出相关链接,如有侵权,恳请告知。本文如有错误,恳请告知,欢迎交流。
参考连接:基本原理
本文是工作手册,经过反复试验所写,所以,尽情在你的xshell粘贴复制,让更多的时间用来思考!如果有不妥的地方,恳请留言告知。
如果您觉得本文值得分享,请帮忙分享出去哦!知识的可贵在于分享与交流,谢谢。
postfix(作为发送邮件服务器)+dovecot(作为接收邮件服务器)+mysql(作为数据库)+extmail (webmail)
本次实验所需的资料下载
链接:https://pan.baidu.com/s/1qYFow4O 密码:56qv
用lrzsz将其拖拽到/root目录下
邮件服务器原理
概念解释
MUA:Mail User Agent.邮件用户代理。(客户端)
用户通过MUA接收发送邮件用户通过MUA接收发送邮件.例如Outlook,formail等.
MTA:MailTransferProtocol.邮件传输代理。 (发送邮件服务器)
是SMTP的一种实现.常用的MTA有sendmail,Postfix.本例中使用Postfix.MTA仅仅负责邮件的传输,MDA负责把接收到的邮件保存在硬盘中.
MDA: Mail Deliver Agent,邮件分发代理. 负责将接收到的邮件保存在邮件服务器上.sendmail以及Postfix默认使用的MDA是procmail.
MRA: Mail Receive Agent,邮件接收代理。 (邮件接收服务器) 用来实现IMAP,POP3协议,负责与MUA交互,将服务器上的邮件通过IMAP以及POP3传输给客户端.本例中使用的MRA是Dovecot.
LMTP:Local Mail Transfer Protocol. 本地邮件传输协议,是SMTP协议的扩展.本例中用与同一主机内邮件传输.
Postfix:一个开源的MTA服务器,负责通过SMTP协议管理发送到本机的邮件以及由本机向外发送的邮件.与sendMail相似.现今流行的服务器套件例如Zimbra,IRedMail内部都采用Postfix作为MTA.
Dovecot:一个开源的IMAP以及POP3服务器.通常工作是验证用户身份以及邮件的处理.
MySQL:存取用户信息,监听的域名信息,用户邮箱地址以及登录密码等.
postfix初试探
postfix默认已安装
1、修改postfix主配置文件
vim /etc/postfix/main.cf
myhostname = mail.laihu.com 邮件服务器主机名
mydomain = laihu.com 邮件域
myorigin = $myhostname 允许发送邮件的地址(取消注释)
myorigin = $mydomain
inet_interfaces = all 监听的地址
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain 设置允许接受邮件的地址
home_mailbox = Maildir/ 存放位置
/etc/init.d/postfix restart
(否则会报错)
2、测试
先创建两个用户
useradd zhangsan
useradd lisi
passwd ...
yum -y install telnet
安装telnet
telnet mail.laihu.com 25
链接邮件服务器
helo mail.laihu.com ` 申明域名
mail from: [email protected]`
rcpt to:[email protected]`
data
dkasjdklasjkdjaklsjdlajskdla (邮件内容)
. (表示结束)
quit (退出)
进入lisi家目录去查看
3、安装 dovecot
yum -y install dovecot
service dovecot start
netstat -an | grep 110 \ 143
telnet mail.laihu.com 110
user lisi
pass 123
list 列出邮件
retr 1 使用序号进行查看邮件
搭建接企业级邮件服务器
1.使用extmail自带模板在mysql中创建数据库
yum -y install mysql mysql-server mailx httpd
/etc/init.d/mysqld start
mysqladmin -uroot password 123
(创建MySQL 的root密码,mysqladmin -u[username] -p[password] extended-status )
mkdir /var/www/extsuite
mkdir /iso
mount -o loop /root/EXTMAIL.iso /iso
cd /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
cd extman/docs/
grub-md5-crypt
创建密码 abc.com
vim init.sql
修改[email protected]的密码(复制grub产生的密码,在第27行 INSERT INTO manager
VALUES ('[email protected]', 删除此处的示例密码)
如果mysql没有设置密码:
mysql < extmail.sql 导入extmail自带数据库
mysql < init.sql 导入extmail的测试账户
有密码:
mysql -uroot -p
然后用
mysql -uroot -p
输入密码123
输入 show databases;
(有分号)
使用数据库,输入:
use extmail
show tables;
exit
2.配置postfix支持虚拟域
cd /var/www/extsuite/extman/docs/
拷贝模板文件:(支持虚拟用户)
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
postfix读取模板文件:
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
重启postfix,查看是否成功!
/etc/init.d/postfix restart
发一封邮件:
echo "hello world" | mail -s test [email protected]
(没有DNS则不会成功)
cd /home/vmail/ ; ls
extmail.org 目录存在则postfix配置成功
进入收件箱:
cd /home/vmail/extmail.org/postmaster/Maildir/new/
cat 查看
3.配置MDA(dovecot)
yum -y install dovecot dovecot-mysql
cd /etc/dovecot/conf.d/
vim 10-mail.conf
mail_location = maildir:/home/vmail/%d/%n/Maildir 邮件收取配置,这里采用mairdir形式 24行
first_valid_uid = 600 167行
vim 10-auth.conf
!include auth-sql.conf.ext 去掉注释 120行
cd ../
cp /usr/share/doc/dovecot-2.0.9/example-config/dovecot-sql.conf.ext /etc/dovecot
vim dovecot-sql.conf.ext
driver = mysql 29行
connect = host=localhost dbname=extmail user=extmail password=extmail 63行
default_pass_scheme = MD5 73行
password_query = \ 102行
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' 120行
启动dovecot,测试
/etc/init.d/dovecot start
Dovecot 是一个开源的 IMAP 和 POP3 邮件服务器,支持 Linux/Unix 系统。
yum -y install telnet
telnet localhost 110
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready. 1832.1.513560b4.LftMXp8dtjujF/[email protected]
user [email protected]
(命令:输入用户名)
+OK
pass extmail
(命令:输入密码)
+OK Logged in.
list
(命令:列出邮件)
+OK 2 messages:
1 568
2 568
retr 2
(命令:查看第二封邮件)
quit
退出
4.配置web界面:
vim /etc/httpd/conf/httpd.conf
在最后一行添加以下内容即可(复制容易出现符号错误,要谨慎,出现错误的原因是空格问题,复制时,不要带上任何空格)
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
可以考虑复制下面的代码:
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
检查每一行后面是否有空格,有则删除。
cd /var/www/extsuite/extmail
chown -R vmail.vmail cgi/
\cp webmail.cf.default webmail.cf
vim webmail.cf
SYS_MAILDIR_BASE = /home/vmail 127行
SYS_MYSQL_USER = extmail 139行
SYS_MYSQL_PASS = extmail
SYS_CRYPT_TYPE = plain 136行
cd /var/www/extsuite/extman
chown -R vmail.vmail cgi/
cp webman.cf.default webman.cf
vim webman.cf
SYS_MAILDIR_BASE = /home/vmail 12行
SYS_SESS_DIR = /tmp/ 18行
SYS_CAPTCHA_LEN = 4 27行(验证码长度)
SYS_CRYPT_TYPE = plain 124行 (字符集验证类型)
vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80 去掉注释 第990行
启动httpd service httpd start
测试界面:
这里会报错,所以我们安装以下软件以防报错
yum -y install *CGI
cd /iso
tar xf Unix-Syslog-1.1.tar.gz -C /root
cd /root/Unix-Syslog-1.1
perl Makefile.PL
此处尽量一步一步来,以免出错。
make test
make install
在新用户注册时,出现验证码显示不正常则:
cd /iso
yum install -y perl-GD-2.44-3.el6.x86_64.rpm
EXTmail邮件后台extman显示No such file or directory
运行以下命令:
/var/www/extsuite/extman/daemon/cmdserver -d
service httpd restart
测试帐号
[email protected]
extmail
管理员帐号
Root
abc.com相当于grub的md5密码
如果重启后发现登录时提示DBI connect ......can't connect to mysql server
则需要启动MySQL
service mysqld start