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能夠查看動態的日誌。服務器