《web-Mail服务的搭建》

首先是搭建后台服务:

下载下面2个软件包 extmail-1.2.tar.gz

extman-1.1.tar.gz

创建一个extsuite目录,固定格式 mkdir /var/www/extsuite

将2个压缩包解压到/var/www/extsuite/目录 tar zxf extman-1.1.tar.gz -C /var/www/extsuite/

tar zxf extmail-1.2.tar.gz -C /var/www/extsuite/

切换到/var/www/extsuite/ cd /var/www/extsuite/ 将2个压缩后的目录改名,原目录太长了。 mv extmail-1.2/ extmail

mv extman-1.1/ extman

cd extman 上面我们创建了一个extsuite目录,为什么非得是extsuite。因为下面一个文件webman.cf.default里面写的很多参数缺省的路径/var/www/extsuite/extman/这个路径。

cd extman/docs/

下面这个文件里面默认写了很多mail服务数据库的配置,将其直接导入。

mysql -uroot -predhat < extmail.sql

vim init.sql //将里面的加密密码改为名文密码

这个文件写了很多关于mail用户,邮箱,别名等服务在mysql服务写入的数据

mysql -uroot -predhat < init.sql

我们将/var/www/extsuite/extman/docs下三个关于mail的邮箱,域名,别名的文件cp到/etc/postfix目录下.

cp mysql_virtual_alias_maps.cf mysql_virtual_domains_maps.cf mysql_virtual_mailbox_maps.cf /etc/postfix/

校验这三个文件是否正确:mysql:/etc/postfix这个必须绝对路径

postmap -q "[email protected]" mysql:/etc/postfix/mysql_virtual_alias_maps.cf

postmap -q "[email protected]" mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

postmap -q "extmail.org" mysql:/etc/postfix/mysql_virtual_domains_maps.cf

查看一些postfix的参数,通过过滤获取关于vitual项 postconf -d | grep virtual 将其加入到postfix的主配置文件,使其自动读取。

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

postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql_virtual_alias_maps.cf

我们使用的是虚拟用户,当然也要创建一个虚拟用户。

useradd -u 800 -s /sbin/nologin vmail 将其参数写入main.cf文件,自动生效。

postconf -e virtual_gid_maps=static:800

postconf -e virtual_uid_maps=static:800

指定虚拟用户的mail存储位置。

postconf -e virtual_mailbox_base=/home/vmail/

postconf -e inet_interfaces=all //所有人可以使用mail服务

配置完后重启载入。

postfix reload 测试,发封邮件试试。 mail [email protected]

mailq cd /home/vmail/

搭建前台服务:

cd extmail/ 建立前台mail主配置文件

cp webmail.cf.default webmail.cf

vim INSTALL 查看帮助

将下面的行复制到Apache配置文件下

NameVirtualHost *:80

<VirtualHost *:80>

ServerName mail.example.com

DocumentRoot /var/www/extsuite/extmail/html/

ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi

Alias /extmail /var/www/extsuite/extmail/html

SuexecUserGroup vuser vgroup </VirtualHost>

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

SuexecUserGroup vmail vmail //有效用户和组

</VirtualHost>

192.168.2.249   mail.extmail.org //在浏览器客户端做个解析

/etc/init.d/httpd restart  //重启apache服务

cd /var/www/extsuite/ //默认这些文件任何人都可以使用,但我们服务是以vmail用户身份去访问下面的文件

chown -R vmail.vmail *

yum install perl-CGI //再次刷新发现服务不支持CGI模块

vim webmail.cf

SYS_LOG_ON = 0 //关闭日志功能

SYS_MAILDIR_BASE = /home/vmail //将主配置文件收邮件的目录修改成我们默认的路径

SYS_CRYPT_TYPE = plain //使用明文密码

SYS_MYSQL_USER = extmail //修改登录mysql数据库所使用的用户和密码 SYS_MYSQL_PASS = extmail

用户注册的实现: cd extman/

vim INSTALL

NameVirtualHost *:80

<VirtualHost *:80>

ServerName mail.example.com

DocumentRoot /path/to/your/document/root/

ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi

Alias /extman /var/www/extsuite/extman/html

SuexecUserGroup vuser vgroup

</VirtualHost>

ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi

Alias /extman /var/www/extsuite/extman/html

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

/etc/init.d/httpd restart 浏览器测试 http://mail.extmail.org/extman/cgi/index.cgi

会提示没有主配置文件:

cp webman.cf.default webman.cf

修改邮件的有效用户

SYS_MAILDIR_BASE = /home/vmail

临时文件

SYS_SESS_DIR = /tmp/

关闭验证吗功能呢个

SYS_CAPTCHA_ON = 0

使用明文密码 SYS_CRYPT_TYPE = plain

# yum install -y perl-ExtUtils-MakeMaker perl Makefile.PL

# make install

SYS_CAPTCHA_ON = 1

SYS_CAPTCHA_LEN = 4 发现验证码显示不出来:

get perl-GD-2.45-1.el6.rfx.x86_64.rpm

# rpm -ivh perl-GD-2.45-1.el6.rfx.x86_64.rpm

/var/www/extsuite/extman/addon

# cp mailgraph_ext/ /usr/local/ -r

/usr/local/mailgraph_ext

# vim mailgraph-init

BASEDIR=/usr/local/mailgraph_ext

# ./mailgraph-init

# yum localinstall rrdtool-perl-1.3.8-6.el6.x86_64.rpm

# /usr/local/mailgraph_ext/mailgraph-init start

File-Tail-0.99.3.tar.gz

# tar zxf File-Tail-0.99.3.tar.gz

cd File-Tail-0.99.3 # perl Makefile.PL

# yum install perl-Time-HiRes -y

# make install

# /usr/local/mailgraph_ext/mailgraph-init start

/var/www/extsuite/extman/daemon/cmdserver &

vim /etc/rc.d/rc.local

/var/www/extsuite/extman/daemon/cmdserver &

/usr/local/mailgraph_ext/mailgraph-init start

取消自由注册:

cd extmail/

vim webmail.cf

SYS_SHOW_SIGNUP = 0

yum search dovecot

yum search dovecot-mysql.x86_64 -y 主配置文件不变。

vim 10-mail.conf

mail_location = maildir:/home/vmail/%d/%n/Maildir

first_valid_uid = 800

vim 10-auth.conf

!include auth-sql.conf.ext passdb {   driver = sql 找到下面的行,提示我们去找这个文件,example-config/dovecot-sql.conf.ext

下面的是路径/usr/share/doc/dovecot-2.0.9/example-config,这个文件只是一个模板。

# Path for SQL configuration file, see example-config/dovecot-sql.conf.ext   args = /etc/dovecot/dovecot-sql.conf.ext }

我们将其cp到/etc/dovecot路径下,

并修改以下参数。

driver = mysql

connect = host=localhost dbname=extmail user=extmail password=extmail

default_pass_scheme = PLAIN

password_query = \

SELECT username, domain, password \

FROM mailbox WHERE username = ‘%u‘ AND domain = ‘%d‘

user_query = SELECT maildir, 800 AS uid, 800 AS gid FROM mailbox WHERE username = ‘%u‘

豆腐块的证书制作: /etc/pki/tls/certs

证书的名字:dovecot.pem 将其分别拷贝到公钥和加密目录下。

cp dovecot.pem /etc/pki/dovecot/certs/

cp dovecot.pem /etc/pki/dovecot/private/

/etc/init.d/dovecot restart

重启就ok了。

下面是TLS和SASL证书模块和加密模块在mail服务中的添加。和msyql的加载一样:

yum install -y cyrus-sasl-devel yum install -y openssl-devel

# cd postfix-2.11.0 //切换到加压包的目录

/root/postfix-2.11.0/README_FILES //这个目录下的2个文件,less SASL_README  less TLS_README 和mysql一块重新编译升级。

#  make -f Makefile.init makefiles ‘CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS‘ ‘AUXLIBS=-L/usr/lib64/mysql -lmysqlclient -lz -lm -L/usr/lib64 -lsasl2 -lcrypto‘

make upgrade

《web-Mail服务的搭建》

时间: 2024-10-27 08:31:57

《web-Mail服务的搭建》的相关文章

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

IOS测试框架之:athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记 作者:唯一 athrun是淘宝的开源测试项目,InstrumentDriver是ios端的实现,之前在公司项目中用过这个框架,没有深入了解,现在回来记录下. 官方介绍:http://code.taobao.org/p/athrun/wiki/instrumentDriver/ 优点:这个框架是对UIAutomation的java实现,在代码提示.用例维护方面比UIAutomation强多了,借junit4的光,我们可以通过junit4的

Yii源码阅读笔记 - 日志组件

?使用 Yii框架为开发者提供两个静态方法进行日志记录: Yii::log($message, $level, $category);Yii::trace($message, $category); 两者的区别在于后者依赖于应用开启调试模式,即定义常量YII_DEBUG: defined('YII_DEBUG') or define('YII_DEBUG', true); Yii::log方法的调用需要指定message的level和category.category是格式为“xxx.yyy.z

源码阅读笔记 - 1 MSVC2015中的std::sort

大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格式化,去掉或者展开用于条件编译或者debug检查的宏,依重要程度重新排序函数,但是不会改变命名方式(虽然MSVC的STL命名实在是我不能接受的那种),对于代码块的解释会在代码块前(上面)用注释标明. template<class _RanIt, class _Diff, class _Pr> in

CI框架源码阅读笔记5 基准测试 BenchMark.php

上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功能,各模块之间可以相互调用,共同构成了CI的核心骨架. 从本篇开始,将进一步去分析各组件的实现细节,深入CI核心的黑盒内部(研究之后,其实就应该是白盒了,仅仅对于应用来说,它应该算是黑盒),从而更好的去认识.把握这个框架. 按照惯例,在开始之前,我们贴上CI中不完全的核心组件图: 由于BenchMa

CI框架源码阅读笔记2 一切的入口 index.php

上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里这次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现. 1.       设置应用程序环境 define('ENVIRONMENT', 'development'); 这里的development可以是任何你喜欢的环境名称(比如dev,再如test),相对应的,你要在下面的switch case代码块中

Apache Storm源码阅读笔记

欢迎转载,转载请注明出处. 楔子 自从建了Spark交流的QQ群之后,热情加入的同学不少,大家不仅对Spark很热衷对于Storm也是充满好奇.大家都提到一个问题就是有关storm内部实现机理的资料比较少,理解起来非常费劲. 尽管自己也陆续对storm的源码走读发表了一些博文,当时写的时候比较匆忙,有时候衔接的不是太好,此番做了一些整理,主要是针对TridentTopology部分,修改过的内容采用pdf格式发布,方便打印. 文章中有些内容的理解得益于徐明明和fxjwind两位的指点,非常感谢.

CI框架源码阅读笔记4 引导文件CodeIgniter.php

到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.com/usr/reg 经过引导文件,实际上会交给Application中的UsrController控制器的reg方法去处理. 这之中,CodeIgniter.php做了哪些工作?我们一步步来看. 1.    导入预定义常量.框架环境初始化 之前的一篇博客(CI框架源码阅读笔记2 一切的入

jdk源码阅读笔记之java集合框架(二)(ArrayList)

关于ArrayList的分析,会从且仅从其添加(add)与删除(remove)方法入手. ArrayList类定义: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Monaco } span.s1 { color: #931a68 } public class ArrayList<E> extends AbstractList<E> implements List<E> ArrayList基本属性: /** *

dubbo源码阅读笔记--服务调用时序

上接dubbo源码阅读笔记--暴露服务时序,继续梳理服务调用时序,下图右面红线流程. 整理了调用时序图 分为3步,connect,decode,invoke. 连接 AllChannelHandler.connected(Channel) line: 38 HeartbeatHandler.connected(Channel) line: 47 MultiMessageHandler(AbstractChannelHandlerDelegate).connected(Channel) line: