电子邮件是因特网上最为流行的应用之一。如同邮递员分发投递传统邮件一样,电子邮件也是异步的,也就是说人们是在方便的时候发送和阅读邮件的,无须预先与别人协同。与传统邮件不同的是,电子邮件既迅速,又易于分发,而且成本低廉。另外,现代的电子邮件消息可以包含超链接、HTML格式文本、图像、声音甚至视频数据。

首先我们的Mail服务器是建立在LAMP的基础上的,所以我们先要搭建一下我们的LAMP环境。

我们用到的软件有: httpd-2.2.9.tar.gz ,mysql-5.0.56.tar.gz ,php-5.2.6.tar.bz2 。

下面我们开始配置环境

1. # tar -zxvf httpd-2.2.9.tar.gz -C /usr/src/

# cd /usr/src/httpd-2.2.9/

# ./configure --prefix=/usr/local/apache2

--enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/lib --enable-auth-digest

--enable-cgi --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot        =/usr/local/apache2/htdocs  && make && make install(编译安装)

# service httpd stop

# chkconfig --level 2345 httpd off

# cd /usr/local/apache2/bin/

# ./apachectl start

# ./apachectl restart

# lsof -i:80

2. 编译安装mysql并进行配置

# tar -zxvf mysql-5.0.56.tar.gz -C /usr/src/

# cd /usr/src/mysql-5.0.56/

# useradd -M -s /sbin/nologin mysql     # 添加一个mysql的非登陆用户

# ./configure --prefix=/usr/local/mysql && make && make install      # 编译安装

# cd support-files

# cp my-medium.cnf /etc/my.cnf  #建立配置文件

# cd /usr/local/mysql

# ./mysql_install_db --user=mysql

# chown -R root.mysql /usr/local/mysql/   # 修改所属组

# chown -R mysql /usr/local/mysql/var/

# cd /usr/local/mysql/bin

# ./mysqld_safe --user=mysql &

# ./mysql                              # 启动mysql

3. 安装PHP软件,并进行配置。

# tar -jxvf /mnt/Linux-server/LNS-SG5/php-5.2.6.tar.bz2 -C .

# cd php-5.2.6/323

# ./configure --prefix=/usr/local/php5 --enable-mbstring --with-   apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/

--with-config-file-path=/usr/local/php5 && make && make install

# cp  /usr/src/php/php.ini-dist   /usr/local/php5/php.ini

# vim /usr/local/apache2/conf/httpd.conf 添加以下两行

AddType application/x-httpd-php .php  添加

DirectoryIndex index.php index.html 修改

# cd /usr/local/apache2/bin

# ./apachectl restart   #  启动

至此我们的LAMP环境就搭建完成了。我们开始搭建我们的mail服务器。

4.邮件传输代理(MTA) Postfix 2.5.3 使用最新版本2.5.3 数据库/目录服务 MySQL 5.0  可选openLDAP或NetScape LDAP,本文以MySQL为蓝本,邮件投递代理(MDA) maildrop 2.0.x 支持过滤和强大功能 Web帐户管理后台 ExtMan 0.2.5 支持无限域名、无限用户 POP3 服务器 Courier-IMAP 对于大部分企业而言完全足够.WebMail 系统 ExtMail 1.1 支持多语言、全部模板化,功能基本齐全 SMTP认证库 Cyrus SASL  标准的SASL实现库,可以支持Courier authlib

其他数据认证库 Courier Authlib 0.60 authlib是maildrop, courier-imap等服务的关键部件

日志分析及显示 mailgraph_ext 在ExtMan中已经包含了. Web 服务器 Apache 2.x OS 自带 .

我们开始安装postfix

首先我们需要停掉sendmail,然后安装这几个必备的包,可能你的在装机时已经装上了。然后通过yum 安装postfix ,这里我们已经装过了。执行postconf -m 我们查看一下它是否支持mysql验证。好了,我们的第一步就算完成了。

5. 接下来我们开始修改postfix的配置文件:

除了图上的两处还有

inet_interfaces = all   115行

mynetworks = 192.168.0.0/24, 127.0.0.0/8   262行

然后我们重启postfix.

6. 配置好postfix 之后我们来安装authlib,使用authlib登陆验证.这样可以不用管后台用户数据是用什么方式存储的.比方说MySQL/LDAP

7. 安装完毕后我们需要修改以下配置文件。

8  . 修改Mysql支持的相关配置文件

#  vim /etc/authlib/authmysqlrc

MYSQL_SERVERlocalhost     26行

MYSQL_USERNAMEextmail

MYSQL_PASSWORDextmail

MYSQL_SOCKET/var/lib/mysql/mysql.sock

MYSQL_PORT3306

MYSQL_DATABASEextmail

MYSQL_USER_TABLEmailbox

MYSQL_CRYPT_PWFIELDpassword

MYSQL_UID_FIELDuidnumber

MYSQL_GID_FIELDgidnumber

MYSQL_LOGIN_FIELDusername

MYSQL_HOME_FIELDconcat('/var/mailbox/',homedir)用户家目录的绝对路径

MYSQL_MAILDIR_FIELDconcat('/var/mailbox/',maildir)

重新启动courier-authlib, 并创建邮箱目录

# service courier-authlib start

# mkdir /var/mailbox

9. 安装courier-imap 屏蔽IMAP服务

# yum install courier-imap

ExtMail目前还没有正式支持IMAP目录,因此需要屏蔽IMAP,只提供pop3服务。而就目前的使用情况来看,IMAP使用的非常少,绝大部分OutLook/Foxmail用户都习惯使用POP3而非IMAP。

# vim /usr/lib/courier-imap/etc/imapd

IMAPDSTART=NO

# vim /usr/lib/courier-imap/etc/imapd-ssl

IMAPDSSLSTART=NO

重新启动courier-imap

# service courier-imap start

10. 安装maildrop

maildrop是一个使用C++编写的用来代替本地MDA的带有过滤功能邮件投递代理,是courier邮件系统组件之一,我们在此将使用maildrop来代替postfix自带的MDA。

# yum install maildrop

为了使Postfix支持Maildrop,必须修改/etc/postfix/master.cf文件:

# vim /etc/postfix/master.cf

63 maildrop   unix        -       n        n        -        -        pipe

64   flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient}   ${user} ${extension} {nexthop}

注意上面一行前面要有2个空格,否则启动失败

配置main.cf 由于maildrop不支持一次接收多个收件人,因此必须在main.cf里增加如下参数:

maildrop_destination_recipient_limit = 1

# maildrop -v   测试

检查安装结果,请确保有"Courier Authentication Library extension enabled."一句出现:

maildrop RPM包安装时,会自动创建vuser用户及vgroup用户组,专门用于邮件的存 储, vuser:vgroup的uid/gid都是1000

修改邮箱目录属性:

chown vuser.vgroup /var/mailbox -R

11. 安装cyrus-sasl         ========用户登录验证

# yum install cyrus-sasl                          官网:wiki.extmail.org

开启postfix的smtp认证

# vim /etc/postfix/main.cf

smtpd_sasl_auth_enable = yes

smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination

让postfix支持虚拟用户

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

virtual_transport = maildrop

# local_recipient_maps = (注释去掉)  209行

编辑smtpd.conf文件,   让虚拟用户到mysql数据库认证

# vim /usr/lib64/sasl2/smtpd.conf

pwcheck_method: authdaemond

log_level: 3

mech_list: PLAIN LOGIN

authdaemond_path:/var/spool/authdaemon/socket

修改authdaemon socket目录权限

如果该目录权限不正确修改,maildrop及postfix等将无法正确获取用户的信息及密码认证:

# chmod -R 777 /var/spool/authdaemon/

# service saslauthd start

12. 安装ExtMail和extman       ======安装web界面 MUA 

# yum install extsuite-webmail

# cd /var/www/extsuite/extmail

# cp webmail.cf.default webmail.cf

# vim webmail.cf

语言选项,可改作:

SYS_USER_LANG = zh_CN        77行

此处即为您在前文所设置的用户邮件的存放目录,可改作:

SYS_MAILDIR_BASE = /var/mailbox/    127行

SYS_MYSQL_USER = extmail            139+行

SYS_MYSQL_PASS = extmail

SYS_MYSQL_DB = extmail

# chown -R vuser.vgroup /var/www/extsuite/extmail/cgi/  # 修改所属组和所有者

# yum install extsuite-webman

# vim /var/www/extsuite/extman/webman.cf

此处即为您在前文所设置的用户邮件的存放目录,可改作:

12  SYS_MAILDIR_BASE = /var/mailbox

21  SYS_CAPTCHA_ON = 0   //不需要认证码

# mkdir /tmp/extman

# chown vuser.vgroup /tmp/extman

设置虚拟域和虚拟用户的配置文件

# cp /var/www/extsuite/extman/docs/mysql_virtual_*.cf /etc/postfix/

# chown -R vuser.vgroup /var/www/extsuite/extman/cgi/

导入mysql数据库结构及初始化数据

  # cd /var/www/extsuite/extman/docs

  # mysql -u root -p <extmail.sql

  # mysql -u root -p <init.sql

测试authlib认证:

# /usr/sbin/authtest -s login postmaster@extmail.org extmail

Authentication succeeded.

Authenticated: postmaster@extmail.org  (uid 1000, gid 1000)

Home Directory: /var/mailbox/extmail.org/postmaster

Maildir: /var/mailbox/extmail.org/postmaster/Maildir/

Quota: (none)

Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0

Cleartext Password: extmail

Options: (none)

这样表明ExtMan的正确安装,数据库也正确导入,courier-authlib能正确连接到mysql数据库

修改httpd.conf文件

NameVirtualHost *:80

<VirtualHost *:80>

ServerName mail.lx.com

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 vuser vgroup

</VirtualHost>

 # service httpd restart

13. 访问及测试 http://mail.lx.com/extman

选择管理即可登入extman进行后台管理了。默认管理帐号为:root@extmail.org

密码为:extmail*123*

登录成功后创建虚拟域和虚拟用户

使用telnet登录25和110端口进行测试

LINUX下的Mail服务器的搭建的更多相关文章

  1. ​Linux下的SVN服务器搭建

    ​Linux下的SVN服务器搭建 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总 ...

  2. Linux下的SVN服务器搭建(转)

    Linux下的SVN服务器搭建   鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此 ...

  3. VPS CentOS-6 下 LNMP HTTP服务器的搭建

    VPS CentOS-6 下 LNMP HTTP服务器的搭建 前言 恢复更新后的第一篇博文, 前段时间由于各种理由, 把博客更新给宕掉了, 个人独立博客的开发也搁浅了, 现在随着工作的逐步稳定, 决心 ...

  4. Linux下安装Tomcat服务器和部署Web应用

    一.上传Tomcat服务器

  5. Linux下部署FTP服务器

    Linux下部署FTP服务器 下载安装包 在这里介绍的是离线部署FTP,首先下载对应的rpm包,下载链接为: 下载vsftpd服务 下载FTP客户端 安装ftp服务器 关闭防火墙 service ip ...

  6. Linux下配置Tomcat服务器

    Linux下配置Tomcat服务器和Windows下其实差不多,可以去官网下载安装包释放或者在线下载,只是当时下载的windows.zip文件,现在下载.tar.gz格式的即可,下面使用命令行的方式安 ...

  7. 转】Linux下安装Tomcat服务器和部署Web应用

    原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4097608.html 感谢! 一.上传Tomcat服务器

  8. Linux下使用mail命令发送邮件

    因为需要经常备份网站的数据,所以了解并学习了下linux下如何通过shell来发送邮件,这里以CentOS为例,使用mail命令来进行外部邮件的发送.mail命令的语法如下: Usage: mail ...

  9. Linux下登陆mysql服务器不需要输入账号密码信息

    linux下登录mysql服务器一般都是在命令行手动输入链接信息 [root@localhost ~]# mysql -hlocalhost -uroot -p11111 而在mysql 5.6之后版 ...

随机推荐

  1. 用C读取系统明文(附源码)

    从一好朋友那得到一个好东西 可以读取系统明文 请用vc++ 6.0编译 #include <windows.h> #include <stdio.h> // // Vsbat[ ...

  2. hdoj 4445 Crazy Tank 物理题/枚举角度1

    Crazy TankTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  3. Caffe2(1)----Ubantu14.04安装

    英文好的请直接参考官方安装文档:Ubantu14.04下的源码编译. Caffe2的安装相比以前Caffe一代的安装,简直有点一键装机的感觉,下面简单总结下Caffe2的安装. 环境:Ubantu14 ...

  4. apache如何支持asp.net

    Apache是目前广泛使用的一种网络服务器程序,不仅在UNIX/LINUX平台上被大量使用,而且在Windows平台上也有许多站点放弃了IIS而转向Apache..NET是微软推出的功能强大的开发技术 ...

  5. linux系统负载相关的概念和度量

    系统负载有 CPU利用率 和 LoadAverage这2个概念. cpu利用率:cpu utilization,是进程(task)被内核调度进程实际分配了CPU资源后,在时间片内使用CPU进行工作运算 ...

  6. Spring MVC的异步模式DefferedResult

    原文:http://www.importnew.com/21051.html 什么是异步模式 要知道什么是异步模式,就先要知道什么是同步模式,先看最典型的同步模式: (图1) 浏览器发起请求,Web服 ...

  7. Xcode GDB 调试

    关于GDB 对于大多数Cocoa程序员来说,最常用的debugger莫过于Xcode自带的调试工具了.而实际上,它正是gdb的一个图形化包装.相对于gdb,图形化带来了很多便利,但同时也缺少了一些重要 ...

  8. python文本 判断对象里面是否是类字符串

    python文本 判断对象里面是否是类字符串 场景: 判断对象里面是否是类字符串 一般立刻会想到使用type()来实现 >>> def isExactlyAString(obj):  ...

  9. 7. python 字符串格式化方法(2)

    7. python 字符串格式化方法(2) 紧接着上一章节,这一章节我们聊聊怎样添加具体格式化 就是指定替换字段的大小.对齐方式和特定的类型编码,结构如下: {fieldname!conversion ...

  10. Windows 7 卸载 IE10

    今天微软为Windows 7发布了IE10预览版,你是否已经安装?根据笔者的体验,IE10确实如微软所说,在速度.性能等各方面都有了明显提升. 不过,IE10发布预览版安装后会直接替代IE9,如果你想 ...