postfix+mysql+dovecot+extmail
slinux 和iptables都关掉!!!!!!
实验一:准备环境:slinux 和iptables都关掉
(1)yum install mysql mysql-server httpd telnet dovecot-mysql -y
(2)mkdir /var/www/extsuite
cd /var/www/extsuite
lftp 192.168.0.254
cd /pub/docs/extmail
get extmail-1.2.tar.gz extman-1.1.tar.gz
tar zxf extmail-1.2.tar.gz
tar zxf extman-1.1.tar.gz
cd /var/www/extsuite/
mv extmail-1.2 extmail
mv extman-1.1 extman
cd extmail
ls
cp webmail.cf.default webmail.cf
cd extman
ls
cp webmail.cf.default webmail.cf
(3)cd ../extman/docs
mysql -u root - p < extmial.sql
html
输入mysql密码
vi init.sql
INSERT INTO `mailbox` VALUES ('postmaster@extmail.org','postmaster','westos','','PostMaster','
LOCK TABLES `manager` WRITE;
INSERT INTO `manager` VALUES ('root@extmail.org','westos','admin','root',
mysql -u root -p < init.sql(将数据库中的一些框架和表加进数据库中。。。。?)输入mysql密码mysql
(4) cp mysql_virtual_alias_maps /etc/postfix/ mysql-alias.cf
cp mysql_virtual_domains_maps /etc/postfix/ mysql-domains.cf
cp mysql_virtual_mailboxs_maps /etc/postfix/ mysql-mailboxs.cf
cd /etc/postfix/
vi mysql-alias.cf
linux
- user = extmail
- password = extmail
- hosts = localhost
- dbname = extmail
- table = alias
- select_field = goto
- where_field = address
- additional_conditions = AND active = '1'
vi mysql-domains.cf
web
- user = extmail
- password = extmail
- hosts = localhost
- dbname = extmail
- table = domain
- select_field = domain
- where_field = domain
- additional_conditions = AND active = '1'
vi mysql-mailboxs.cf
sql
- user = extmail
- password = extmail
- hosts = localhost
- dbname = extmail
- table = mailbox
- select_field = maildir
- where_field = username
- additional_conditions = AND active = '1'
编辑完以后要检查文件编写的正确与否:
postmap -q "postmaster@extmail.org" mysql:/etc/postfix/mysql-mailboxs.cf
extmail.org/postmaster/Maildir/
postmap -q "support@extmail.org" mysql:/etc/postfix/mysql-alias.cf
postmaster@extmail.org
postmap -q "extmail.org" mysql:/etc/postfix/mysql-domains.cf
extmail.org
postfix reload
/etc/init.d/postfix restart
收信
(5)下面是关于dovecot的一些配置:
cd /etc/dovecot/conf.d/
vi 10-mail.conf
mail_location = maildir:/home/vmail/%d/%n/Maildir
first_valid_uid = 600
vi 10-auth.conf
!include auth-system.conf.ext
!include auth-sql.conf.ext
数据库
cp /usr/share/doc/dovecot-2.0/example-config/dovecot-sql.conf.ext /etc/dovecot
vi /etc/dovecot/dovecot-sql.conf.ext
connect = host=localhost dbname=extmail user=extmail password=extmail(会自动生成的用户名)
default_pass_scheme=PLAIN
password_query = \
SELECT username, domain, password \
FROM mailbox WHERE username = '%u'
# where userid = '%u'
user_query = SELECT maildir,600 AS uid, 600 AS gid FROM mailbox WHERE username = '%u'
(7)
postconf -e virtual_mailbox_base=/home/vmail
postconf -e virtual_uid_maps=static:600
postconf -e virtual_gid_maps=static:600
postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql-alias.cf
postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-domains.cf
postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-mailboxs.cf
postconf -e inet_interface=all
/etc/init.d/postfix restart
测试完成:/etc/init.d/dovecot restart
telnet localhost 110
user postmaster@extmail.org
pass westos
list
quit
显示OK 表明是正确的。
apache
假若出现上述的状况,是错误的,有多是你的配置文件有错误,你能够试着去检查文件/etc/dovecot/dovecot- sql.conf.ext 本人的错误是把: user_query = SELECT maildir,600 AS uid, 600 AS gid FROM mailbox WHERE username = '%u' 后面的username写成:userid了啊。。。。 若是你找不到错误缘由,你能够查看日志tail /var/log/maillog 正确的以下(不会自行终止哦!):vim
实验二:web搭建收信模式
步骤(1)环境:yum install perl-CGI -y
(2)vi /etc/httpd/conf/httpd.conf
浏览器
- <VirtualHost *:80>
- DocumentRoot /var/www/html
- ServerName desktop85.example.com
- </VirtualHost>
- <VirtualHost *:80>
- DocumentRoot /var/www/extsuite/extmail/html
- ServerName mail.extmail.org
- 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>
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName desktop39.example.com
</VirtualHost>
<VirtualHost *:80>
ServerName mail.extmail.org
DocumentRoot /var/www/extsuite/extmail/html/ (这里的意思是设置你进入以后默认访问的网页)
ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi (别名/extmail/cgi表明的就是/var/www/extsuite/extmail/cgi)
Alias /extmail /var/www/extsuite/extmail/html(以 上两句的大体意思是网页产生实际上来自于脚本/var/www/extsuite/extmail/cgi,用别名/extmail/cgi就是告诉系统 去执行 那里面的脚本CGI文件,而后你输入/extmail就是访问/var/www/extsuite/extmail/html,你输入extman就是访 问/var/www/extsuite/extman/html,系统默认你输入mail.extmail.org就是去访问/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
cd /var/www/extsuite/
chown vmail.vmail /var/www/extsuite/extmail/cgi/ /var/www/extsuite/extman/cgi/ -R
vi /var/www/extsuite/extmail/webmail.cf
SYS_SESS_DIR = /tmp
SYS_CRYPT_TYPE = plain(设置密码为明文的,不然你登陆不进去。)
SYS_LOG_ON = 0//(该值为0意思是 不启动日志,若是你 不关闭日志,那么你进入的时候会出现Unix::Syslog not found, please install it first! (in cleanup) Undefined subroutine &Ext::Logger::do_closelog called at /var/www/extsuite/extmail/libs/Ext/Logger.pm line 86. 报错,不能直接进去,只有把日志禁掉,才能够直接进去,)
SYS_MAILDIR_BASE = /home/vmail//收到邮件的目录。来收邮件的
SYS_MYSQL_USER = extmail//连接数据库的用户名
SYS_MYSQL_PASS = extmail //连接数据库的密码
SYS_MYSQL_DB = extmail //使用的数据库的名字
SYS_MYSQL_HOST = localhost //说明数据库在本机上。
SYS_MYSQL_SOCKET= /var/lib/mysql/mysql.sock
SYS_CAPTCHA_ON = 0(意思是你进入的时候不会弹出验证码要你输入)
vim /var/www/extsuite/extman/ webman.cf(extman属于后台,默认的设置就能够的)
SYS_MAILDIR_BASE = /home/vmail
SYS_SESS_DIR = /tmp/
SYS_CAPTCHA_ON = 0(意思是你进入的时候不会弹出验证码要你输入)
SYS_CRYPT_TYPE = plain
(意思是你以管理员身份进入的时候输入明文密码就能够进来)
/etc/init.d/httpd restart
/etc/init.d/dovecot restart
/etc/init.d/mysqld restart
注意:extmail是属于前台,主要是指的是关于图形界面的一些操做,就像你等录邮箱的时候你在接收邮件的时候那就是前台,而extman是指的后台, 主要指作的是管理员方面的工做,假若你的账号过时或者有什么问题,能够给你禁止。若是你在appache中输 入:mail.extmail.org/extman就能够进去,而后选择ExtMan Login就能够以管理员身份进去,而后你输入root进去。密码固然是你的root密码了。而后你在里面能够建立新的域名,也能够在该域中添加用 户,jack密码redhat。假如你添加的域名为linux.org,而后你在extmail客户端的时候能够以用户:jack password:redhat。Domail:linux.org或者是你选择添加的其余的域名,进去以后你能够发送邮件接收邮件等信息。
配置完成
进行apache测试
假设以上设置是在虚拟机下设置的,那么你先在要用真机去测试在真机的vi /etc/hosts
写进一条 192.168.0.139(IP地址) mail.extmail.org
打开浏览器,而后 输入 mail.extmail.org
若是出现下面:
Unix::Syslog not found, please install it first! (in cleanup) Undefined subroutine &Ext::Logger::do_closelog called at /var/www/extsuite/extmail/libs/Ext/Logger.pm line 86.
则说明是Unix-Syslog没装,或者你能够在webmail.cf中已经把SYS_LOG_ON = 0关了就不会出现那样的提示了。。。Unix-Syslog的安装下面,)
postmaster
westos
而后输入用户名进去
点击compose你就能够发送邮件,如发送为: "ExtMail Support" <support@extmail.org>,意思是发给本地的,你能够在Inbox中接收到你发送来的邮件信息。
你就会看到你建立的数据库信息。
compose 发信 to:support@extmail.org wxh@extmail.org
在你的sent里面能够看到已发送的邮件,在Inbox能够看到你收到的邮件信息
一样你能够在命令行下输入: mail 997365xxx@qq.com就能够发送到你发送的信息。
实验三:
步骤(1)cd /var/www/extsuite/
cd extmail
vi webmail.cf
SYS_LOG_FILE = /var/log/extmail.log
SYS_LOG_TYPE = file(syslog是你产生的日志于你系统产生的日志混在一块儿了,而file意思是产生独立的文件)
保存退出。
touch /var/log/extmail.log
chmod 777 /var/log/extmail.log(意思是让日志文件写进去)
(2) cd /var/www/extsuite
lftp 192.168.0.254
cd pub/docs/extmail
get Unix-Syslog-1.1.tar.gz(你刚才在webmail.cf中已经把SYS_LOG_ON = 0关了。由于开启会报错,你如今安装以后能够收发日志不报错。)
(软件也能够从网上下载。)
tar zxf Unix-Syslog-1.1.tar.gz
cd Unix-Syslog-1.1
你能够查看README如何使用该源码。
在当前路径下执行
perl Makefile.PL
make test
make install
注意在你执行上述三步的时候有可能会缺乏某些包,例如,你看能会用到 yum install make gcc perl-ExtUtils-MakeMaker perl-GD -y
(3)安装完以后:
测试:
http://mail.extmail.org
此时你登陆你的帐户
postmaster
westos
进入你能够管理员的身份添加用户http://mail.extmail.org/extman/cgi,新增长域名信息 如:Domain :linux.org
Description: test
Max users: 100
Max Alias: 100
Max Quota: 500
Max Netdisk :500
Enable signup service: Active
好比你在linux.org域里增长一个用户jack,密码为jack1
那么你推出以后,登陆的时候就能够以此用户登陆了。
(4) yum install perl-rrdtool -y(显示动态日志的时候系统绘图)
cd /var/www/extsuite/extman
cd addon/
cp -r mailgraph_ext/ /usr/local/
cd /usr/local/mailgraph_ext
vi mailgraph_init
BASEDIR=/usr/local/mailgraph_ext
./mailgraph-init start
在上述操做的过程当中可能会出现须要安装 yum install perl-File-Tail
也能够在 服务器上下载 lftp 192.168.0.254
cd /pub/docs/extmail
get 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
make test
make install
运行中可能回报错,此时也许缺乏 perl-Time-HiRes yum install perl-Time-HiRes -y
当上述三步执行成功以后。
./mailgraph-init start 成功以后
测试:
appache测试:
http://mail.extmail.org/extman能够看到动态的日志。
在System下的Graph Log能够查看动态的日志。服务器