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: zhangsan@laihu.com`
rcpt to:lisi@laihu.com`
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
修改root@extmail.org的密码(复制grub产生的密码,在第27行 INSERT INTO manager VALUES ('root@extmail.org', 删除此处的示例密码)
如果mysql没有设置密码:

    mysql < extmail.sql  导入extmail自带数据库
    mysql < init.sql     导入extmail的测试账户

有密码:

        mysql -uroot -p <extmail.sql
            Enter password:  123
        mysql -uroot -p <init.sql

然后用
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 support@extmail.org
(没有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/reBTodLw==@desktop19.example.com
user postmaster@extmail.org (命令:输入用户名)
+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

在最后一行添加以下内容即可(复制容易出现符号错误,要谨慎,出现错误的原因是空格问题,复制时,不要带上任何空格)

<VirtualHost *:80>
      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
</VirtualHost>

可以考虑复制下面的代码:

<VirtualHost *:80>
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
</VirtualHost>

检查每一行后面是否有空格,有则删除。

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

测试帐号
postmaster@extmail.org
extmail

管理员帐号
Root
abc.com相当于grub的md5密码

如果重启后发现登录时提示DBI connect ......can't connect to mysql server
则需要启动MySQL
service mysqld start

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,635评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,543评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,083评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,640评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,640评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,262评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,833评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,736评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,280评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,369评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,503评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,185评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,870评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,340评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,460评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,909评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,512评论 2 359

推荐阅读更多精彩内容