《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 "support@extmail.org" mysql:/etc/postfix/mysql_virtual_alias_maps.cf
postmap -q "postmaster@extmail.org" 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 support@extmail.org
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服务的搭建》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- python 链表
在C/C++中,通常采用“指针+结构体”来实现链表:而在Python中,则可以采用“引用+类”来实现链表. 节点类: class Node: def __init__(self, data): sel ...
- SpringMvc之参数绑定注解详解之三
2. @RequestHeader.@CookieValue @RequestHeader 注解,可以把Request请求header部分的值绑定到方法的参数上. 示例代码: 这是一个Request ...
- Swift3.0 基础学习梳理笔记(一)
本篇是我在学完一遍基础语法知识的时候,第一遍复习,我一遍梳理一遍记录的笔记.同时分享给像我一样在学习swift 的猿友们. 本篇可能过于冗长.所以所有的参考资料都分模块的写在palyground 里, ...
- javaScript之Array方法
Array类型和其他语言一样,是数据的有序列表,但不同的是数组的每一项们可以保存任何类型的数据. 1.检测方法(确定某个对象是不是数组) (1)value instanceof Array (2)Ar ...
- Sequence Models 笔记(一)
1 Recurrent Neural Networks(循环神经网络) 1.1 序列数据 输入或输出其中一个或两个是序列构成.例如语音识别,自然语言处理,音乐生成,感觉分类,dna序列,机器翻译,视频 ...
- Java探索之旅(4)——方法和Random&Math类
1.基本知识点 ❶方法在C++里面称为函数.调用方法时,应该类型兼容--即不需显式类型转换即可将形参传递给实参. ❷形参的改变不影响实参的值. ❸Java注重模块化设计和自顶向下的设 ...
- Servlet编程实例 续1
-----------------siwuxie095 在 LoginServlet 中,右键->Open Type Hierar ...
- rlwrap:让控制台程序使用input.rc里的设置
习惯了vi模式,在bash里配置input.rc可以使平时命令行操作都使用vi习惯,翻页和跳动光标都很方便 但是当运行一些交互式程序时,比如redis-cli,lua等,它们却不按input.rc的配 ...
- Java 散列表的实现
摘自http://www.cxybl.com/html/suanfa/201110125445.html 有改动 public class MyHashtable { //表中元素个数 private ...
- Umbraco项目发布错误 --More than one type want to be a model for content type authorize
在开发项目时,解决方案下面包括三个项目 MyUmbracoProject MyUmbracoProject.Core MyUmbracoProject.FrontEnd 第一个项目MyUmbracoP ...