linux运维学习笔记:邮件服务器系列之01:postfix + extmail

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

你可能感兴趣的:(linux运维学习笔记:邮件服务器系列之01:postfix + extmail)