第一章 postfix所需軟件包及存放目錄
本實驗實在linux下rhel-server-5.4來實現postfix郵件服務器的架構,下面列出所需相關軟件包:
httpd-2.2.9.tar.gz 安裝源碼包apache
mysql-5.0.56.tar.gz 安裝源碼包mysql
php-5.2.6.tar.bz2 安裝php軟件
postfix-2.4.6.tar.gz postfix主程序
postfix-2.4.6-vda-ng.patch.gz postfix的補丁包
dovecot-1.1.4.tar.gz IMAP和POP3郵件服務器軟件
squirrelmail-1.4.13.tar.bz2 web界面郵件管理
extman-0.2.5.tar.gz 郵件後臺管理程序
extmail-1.0.5.tar.gz web界面郵件管理
courier-authlib-0.60.2.tar.bz2 SMTP發信認證
Unix-Syslog-1.1.tar.gz
DBI-1.607.tar.gz
DBD-mysql-4.011.tar.gz 以上三個包爲extmail的倚賴包
GD-2.41.tar.gz
File-Tail-0.99.3.tar.gz
rrdtool-1.2.23-3.el5.i386.rpm
rrdtool-perl-1.2.23-3.el5.i386.rpm 以上四個包爲extman的倚賴包
下面開始進行postfix郵件服務器的搭建:
以上軟件包分別上傳到服務器的“/”(root的home目錄下)下:
2.1安裝apache軟件:
下面我們將把所有需要的安裝包解壓到/usr/local/src/下面以方便我們統一管理維護
[root@localhost ~]# tar -jxvf httpd-2.2.19.tar.bz2 -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/httpd-2.2.19/
[root@localhost httpd-2.2.19]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite
[root@localhost httpd-2.2.19]# make
[root@localhost httpd-2.2.19]# make install
這裏我們並沒有將Suexec編譯進apache中去,提到這個的原因是因爲後面我們裝postfix時候的後臺管理extman是通過CGI的方式來調用程序的,如果不啓用Suexec的話那麼就會限制其他用戶調用CGI程序,但考慮到啓用Suexec的風險我們在此就不啓用它了。(啓用方式:--enable-suexec –with-suexec-caller=daemon –with-suexec-docroot=/usr/local/apache2/htdocs)
2.2安裝mysql軟件:
添加mysql用戶,如果安裝系統時候已經裝過mysql會提示用戶已存在,建議在安裝前先卸載掉系統自帶的mysql,卸載完成後必須重啓,否則新裝的mysql會無法啓動,提示錯誤信息3306端口被佔有:
[root@localhost ~]# useradd -M -s /sbin/nologin mysql
[root@localhost ~]# tar -zxvf mysql-5.1.45.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/mysql-5.1.45/
[root@localhost mysql-5.1.45]# ./configure --prefix=/usr/local/mysql
[root@localhost mysql-5.1.45]# make
[root@localhost mysql-5.1.45]# make install
配置mysql:
複製主配置文件:
[root@localhost mysql-5.1.45]# cp support-files/my-medium.cnf /etc/my.cnf
[root@localhost mysql-5.1.45]# /usr/local/mysql/bin/mysql_install_db --user=mysql
初始化數據庫:
[root@localhost mysql-5.1.45]# chown -R root:mysql /usr/local/mysql
[root@localhost mysql-5.1.45]# chown -R mysql /usr/local/mysql/var
添加庫文件路徑:
[root@localhost mysql-5.1.45]# echo "/usr/local/mysql/lib/mysql/" >> /etc/ld.so.conf
刷新庫文件搜索路徑:
[root@localhost mysql-5.1.45]# ldconfig
後臺安全啓動 (如果顯示啓動並且卡住不動按回車):
[root@localhost mysql-5.1.45]# /usr/local/mysql/bin/mysqld_safe --user=mysql &
複製啓動腳本:
[root@localhost mysql-5.1.45]# cp support-files/mysql.server /etc/init.d/mysqld
賦予腳本執行權限:
[root@localhost mysql-5.1.45]# chmod +x /etc/init.d/mysqld
添加到系統自動啓動服務中:
[root@localhost mysql-5.1.45]# chkconfig --add mysqld
默認啓動mysql:
[root@localhost mysql-5.1.45]# chkconfig mysqld on
查看mysql在什麼級別啓動或者關閉:
[root@localhost mysql-5.1.45]# chkconfig --list mysqld
設置系統全局的環境變量PATH值,方便使用mysql數據庫命令:
[root@localhost mysql-5.1.45]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
重新讀取:
[root@localhost ~]# . /etc/profile
2.3安裝php軟件
[root@localhost ~]# tar -jxvf php-5.3.2.tar.bz2 -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/php-5.3.2/
[root@localhost php-5.3.2]# ./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
[root@localhost php-5.3.2]# make
[root@localhost php-5.3.2]# make install
複製配置文件:
[root@localhost php-5.3.2]# cp php.ini-production /usr/local/php5/php.ini
修改apache服務的主配置文件使其支持php:
[root@localhost php-5.3.2]# vim /usr/local/apache2/conf/httpd.conf
310 AddType application/x-httpd-php .php
167 DirectoryIndex index.php index.html
2.4測試php是否與apache整合成功:
[root@localhost php-5.3.2]# vim /usr/local/apache2/htdocs/test.php
<?php
phpinfo();
?>
[root@localhost ~]# /usr/local/apache2/bin/apachectl start
在瀏覽器中輸入http://192.168.2.1/test.php 看到下圖表示跟apache服務整合成功
Mysql測試:
編輯測試腳本:
[root@localhost ~]# vim /usr/local/apache2/htdocs/testdb.php
<?php
$link=mysql_connect('localhost', 'root', '');
If (!$link) echo "Fail!!!";
else echo "Success!!!";
mysql_close();
?>
在瀏覽器中輸入網址http://192.168.2.1/testdb.php 看到下圖表示跟mysql服務整合成功
第三章 安裝postfix軟件
3.1安裝postfix之前首先停止掉系統自帶的sendmail軟件:
[root@localhost ~]# service sendmail stop
[root@localhost ~]# chkconfig --level 35 sendmail off
3.2編譯安裝postfix軟件
[root@localhost ~]# groupadd -g 1200 postdrop
[root@localhost ~]# groupadd -g 1000 postfix
[root@localhost ~]# useradd -M -u 1000 -g postfix -G postdrop -s /sbin/nologin postfix
[root@localhost ~]# tar -zxvf postfix-2.6.2.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# cd postfix-2.6.2
[root@localhost postfix-2.6.2]# make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS' 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2 -lssl -lcrypto'
[root@localhost postfix-2.6.2]# make
進行安裝,安裝過程中會出現互動提問,直接選擇默認設置即可。
[root@localhost postfix-2.6.2]# make install
4.1 postfix主配文件修改
[root@localhost postfix-2.6.2]# vim /etc/postfix/main.cf
75 myhostname = mail.wisefund.com主機名
83 mydomain = wisefund.com郵件域名
99 myorigin = $mydomain外發郵件時發件人地址中的郵件域名
113 inet_interfaces = all 默認監聽端口爲所有
160 mydestination = $myhostname, $mydomain可接收的郵件地址中的域名
412 home_mailbox = Maildir/ 郵件存儲位置格式
[root@localhost postfix-2.6.2]# postfix check 檢查配置
[root@localhost postfix-2.6.2]# postfix start 啓動
4.2 Smtp發送郵件測試
郵件本地賬戶管理:
[root@localhost ~]# groupadd mailusers
[root@localhost ~]# useradd -g mailusers -s /sbin/nologin user1
[root@localhost ~]# passwd user1
[root@localhost ~]# useradd -g mailusers -s /sbin/nologin test
[root@localhost ~]# passwd test
SMTP發送郵件測試:
[root@localhost ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 mail.wisefund.com ESMTP Postfix
Hello localhost宣告客戶端主機地址
502 5.5.2 Error: command not recognized
220 mail.wisefund.com ESMTP Postfix
502 5.5.2 Error: command not recognized
MAIL FROM:[email protected] 發信人地址
250 2.1.0 Ok
RCPT TO:[email protected] 收信人地址
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject:hello 標記開始寫信
hello!!!!
. “點”表示信件結束
250 2.0.0 Ok: queued as ABDE418421C
quit 退出
221 2.0.0 Bye
Connection closed by foreign host.
查看接收到的郵件,按tab鍵補齊:
第五章 Dovecot 郵局軟件安裝(提供pop3/imap4協議)
5.1安裝Dovecot
[root@localhost ~]# useradd -M -s /sbin/nologin dovecot
[root@localhost ~]# tar -zxvf dovecot-1.1.4.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/dovecot-1.1.4/
[root@localhost dovecot-1.1.4]# ./configure --sysconfdir=/etc --with-mysql
[root@localhost dovecot-1.1.4]# make
[root@localhost dovecot-1.1.4]# make install
5.2安裝完成,
配置複製主配置文件:
[root@localhost dovecot-1.1.4]# cp /etc/dovecot-example.conf /etc/dovecot.conf
[root@localhost dovecot-1.1.4]# vim /etc/dovecot.conf
24 protocols = imap pop3 指定郵局協議
48 disable_plaintext_auth = no 允許明文密碼認證
88 ssl_disable = yes 禁用SSL機制
209 mail_location = maildir:~/Maildir設置郵件存儲格式和位置
建pam認證文件:
[root@localhost dovecot-1.1.4]# vim /etc/pam.d/dovecot
auth required pam_nologin.so
auth include system-auth
account include system-auth
session include system-auth
啓動:
[root@localhost dovecot-1.1.4]# /usr/local/sbin/dovecot -c /etc/dovecot.conf
5.3 POP3郵件接收測試
[root@localhost ~]# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.
user user1
+OK
pass 123
+OK Logged in.
list
+OK 1 messages:
1 489
.
retr 1
+OK 489 octets
Return-Path: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by mail.wisefund.com (Postfix) with SMTP id ABDE418421C
for <[email protected]>; Tue, 10 Apr 2012 17:56:18 +0800 (CST)
Subject:hello
Message-Id: <[email protected]>
Date: Tue, 10 Apr 2012 17:56:18 +0800 (CST)
From: [email protected]
To: undisclosed-recipients:;
hello!!!!
.
quit
+OK Logging out.
Connection closed by foreign host.
[root@localhost ~]# tar -jxvf squirrelmail-1.4.19.tar.bz2 -C /usr/local/apache2/htdocs/
[root@localhost ~]# cd /usr/local/apache2/htdocs/
[root@localhost htdocs]# mv squirrelmail-1.4.19 webmail
6.2 配置webmail
[root@localhost ~]# cd /usr/local/apache2/htdocs/webmail/
[root@localhost webmail]# mkdir -p attach data
[root@localhost webmail]# chown -R daemon:daemon attach/ data/
[root@localhost webmail]# chmod 730 attach/
[root@localhost webmail]# cp config/config_default.php config/config.php
創建配置文件:
[root@localhost webmail]# vim config/config.php
231 $imap_server_type = 'dovecot';
499 $data_dir = '/usr/local/apache2/htdocs/webmail/data/';
517 $p_w_upload_dir = '/usr/local/apache2/htdocs/webmail/attach/';
1012 $squirrelmail_default_language = 'zh_CN';
1027 $default_charset = 'zh_CN.UTF-8';
118 $domain = 'wisefund.com';
重啓 apache 服務:
[root@localhost webmail]# /usr/local/apache2/bin/apachectl restart
客戶端IE地址欄中輸入 http://mail.wisefund.com/webmail (前提mail.wisefund.com可以被解析,否則用ip)即可看見下圖:
到此我們的postfix+webmail已經安裝完成,但是爲了使我們更好的管理維護郵件服務器的前端與後臺接下來我們來安裝extmail和extman以便實現我們的需求。
7.1 數據庫腳本
[root@localhost ~]# service mysqld restart
[root@localhost ~]# tar -zxvf extman-0.2.5.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/extman-0.2.5/docs/
[root@localhost docs]# mysql -u root -p < extmail.sql
腳本導入數據庫的時候會詢問密碼,默認情況下root用戶密碼爲空:
[root@localhost docs]# mysql -u root -p <init.sql
[root@localhost postfix-2.6.2]# postconf -m |grep mysql
mysql(這一步很重要,雖然不影響接下來的安裝,但是在extmail時,發送郵件會出錯,導致郵件無法發送和接收,此時就要卸載postfix,然後重新編譯安裝)
8.1 修改配置文件
[root@localhost docs]# vim /etc/postfix/main.cf
160 #mydestination = $myhostname, $mydomain該行需要註釋掉
649 virtual_mailbox_base = /mailbox 指定虛擬郵箱存儲目錄的路徑起點
650 virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf指定虛擬郵件用戶對應的別名文件位置
651 virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf指定記錄虛擬郵箱地址與存儲位置對應關係的映射文件位置
652 virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf設置postfix服務器可以接收的虛擬郵件域的域名
653 virtual_uid_maps = static:1000設置所有虛擬郵件用戶映射的本地用戶的UID號
654 virtual_gid_maps = static:1000設置所有虛擬郵件用戶映射的本地組的GID 號
[root@localhost docs]# cd /usr/local/src/extman-0.2.5/docs/
在上面的三行配置中指定了這三個文件:
[root@localhost docs]# cp mysql_virtual_* /etc/postfix/
9.1 軟件安裝
注意:確認系統中的rpm格式的mysql 軟件被卸載
[root@localhost ~]# tar -jxvf courier-authlib-0.62.4.tar.bz2 -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/courier-authlib-0.62.4/
[root@localhost courier-authlib-0.62.4]# ./configure --prefix=/usr/local/courier-authlib --without-stdheaderdir --with-authmysql --with-redhat --with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-includes=/usr/local/mysql/include/mysql
[root@localhost courier-authlib-0.62.4]# make
[root@localhost courier-authlib-0.62.4]# make install
[root@localhost courier-authlib-0.62.4]# make install-configure
9.2 添加courier-authlib的庫文件路徑
[root@localhost ~]# vim /etc/ld.so.conf
/usr/local/courier-authlib/lib/courier-authlib/
[root@localhost ~]# ldconfig
9.3 修改authdaemonrc主配置文件
[root@localhost ~]# cd /usr/local/courier-authlib/etc/authlib/
[root@localhost authlib]# cp authdaemonrc authdaemonrc.bak
[root@localhost authlib]# vim authdaemonrc
27 authmodulelist="authmysql"
34 authmodulelistorig="authmysql"
[root@localhost authlib]# chmod -R 755 /usr/local/courier-authlib/var/spool/authdaemon
9.4 修改authmysqlrc 文件
[root@localhost ~]# cd /usr/local/courier-authlib/etc/authlib/
[root@localhost authlib]# cp authmysqlrc authmysqlrc.bak
[root@localhost authlib]# vim authmysqlrc
26 MYSQL_SERVER localhost 數據庫服務器位置
27 MYSQL_USERNAME extmail 數據庫管理員賬戶
28 MYSQL_PASSWORD extmail 數據庫管理員賬戶密碼
50 MYSQL_SOCKET /tmp/mysql.sock 文件位置
69 MYSQL_DATABASE extmail 虛擬用戶數據庫
84 MYSQL_USER_TABLE mailbox 從mailbox表獲得郵件賬戶信息
93 MYSQL_CRYPT_PWFIELD password 從password字段獲得賬戶密碼
114 MYSQL_UID_FIELD uidnumber 從uidnumber字段獲得映射的本地用戶UID
120 MYSQL_GID_FIELD gidnumber 從gidnumber字段獲得映射的本地組GID
129 MYSQL_LOGIN_FIELD username 從username字段獲得賬戶名稱,帶@後綴
134 MYSQL_HOME_FIELD concat('/mailbox/',homedir) 合併出用戶的宿主目錄路徑
151 MYSQL_MAILDIR_FIELD concat('/mailbox/',maildir) 合併出用戶的郵件存儲路徑
9.5 複製腳本,啓動服務
[root@localhost authlib]# cd /usr/local/src/courier-authlib-0.62.4/
[root@localhost courier-authlib-0.62.4]# cp courier-authlib.sysvinit /etc/init.d/courier-authlib
[root@localhost courier-authlib-0.62.4]# chmod 755 /etc/rc.d/init.d/courier-authlib
[root@localhost courier-authlib-0.62.4]# chkconfig --level 35 courier-authlib on
[root@localhost courier-authlib-0.62.4]# service courier-authlib start
[root@localhost courier-authlib-0.62.4]# ps aux |grep courier-authlib
[root@localhost ~]# vim /usr/lib/sasl2/smtpd.conf
pwcheck_method:authdaemond
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
11.1修改Dovecot
[root@localhost ~]# vim /etc/dovecot.conf
209 mail_location = maildir:/mailbox/%d/%n/Maildir
900 passdb sql {
902 args = /etc/dovecot-mysql.conf
903 }
963 userdb sql {
965 args = /etc/dovecot-mysql.conf
966 }
11.2 建立數據查詢配置文件
[root@localhost ~]# vim /etc/dovecot-mysql.conf
driver = mysql
connect = host=localhost dbname=extmail user=extmail password=extmail
數據庫中存儲的密碼串的加密算法:
default_pass_scheme = CRYPT
查詢用戶密碼的語句:
password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = ‘%u’
查詢用戶身份語句:
user_query = SELECT maildir, uidnumber AS uid, gidnumber AS gid FROM mailbox WHERE username = ‘%u’
12.1 建立郵箱目錄並調整權限
[root@localhost ~]# mkdir -p /mailbox/extmail.org/postmaster/Maldir
[root@localhost ~]# cd /mailbox/extmail.org/postmaster/Maldir/
[root@localhost Maldir]# chown -R postfix:postfix /mailbox
啓動服務
[root@localhost Maldir]# dovecot
12.2 虛擬用戶測試
確認authlib服務
[root@localhost ~]# /usr/local/courier-authlib/sbin/authtest -s login [email protected] extmail
成功提示信息:
13.1平臺安裝
首先安裝三個依賴包:(以下三個包在編譯安裝過程可能會提示 警告信息 隱式函數 計算出的變量值未被使用等,只要沒有error信息就一切ok)
[root@localhost ~]# tar -zxvf Unix-Syslog-1.1.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/Unix-Syslog-1.1/
[root@localhost Unix-Syslog-1.1]# perl Makefile.PL
[root@localhost Unix-Syslog-1.1]# make
[root@localhost Unix-Syslog-1.1]# make install
[root@localhost ~]# tar -zxvf DBI-1.616.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/DBI-1.616/
[root@localhost DBI-1.616]# perl Makefile.PL
[root@localhost DBI-1.616]# make
[root@localhost DBI-1.616]# make install
[root@localhost ~]# tar -zxvf DBD-mysql-4.020.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/DBD-mysql-4.020/
[root@localhost DBD-mysql-4.020]# perl Makefile.PL
[root@localhost DBD-mysql-4.020]# make
[root@localhost DBD-mysql-4.020]# make install
安裝ExtMail:
[root@localhost ~]# tar -zxvf extmail-1.0.5.tar.gz -C /usr/local/apache2/htdocs/
[root@localhost ~]# cd /usr/local/apache2/htdocs/
[root@localhost htdocs]# mv extmail-1.0.5 extmail
[root@localhost htdocs]# cd extmail
[root@localhost extmail]# chown -R postfix:postfix cgi
[root@localhost extmail]# cp webmail.cf.default webmail.cf
13.2 修改配置文件
[root@localhost extmail]# cd /usr/local/apache2/htdocs/extmail/
[root@localhost extmail]# vim webmail.cf
2 SYS_CONFIG = /usr/local/apache2/htdocs/extmail/ 程序根目錄
5 SYS_LANGDIR = /usr/local/apache2/htdocs/extmail/lang 語言包文件目錄
8 SYS_TEMPLDIR = /usr/local/apache2/htdocs/extmail/html 系統模版目錄
112 SYS_MAILDIR_BASE = /mailbox 郵件存儲目錄
124 SYS_MYSQL_USER = extmail 訪問mysql數據庫的用戶
125 SYS_MYSQL_PASS = extmail 訪問mysql數據庫的用戶的密碼
126 SYS_MYSQL_DB = extmail 使用數據庫的名稱
127 SYS_MYSQL_HOST = localhost 數據庫服務器地址
128 SYS_MYSQL_SOCKET = /tmp/mysql.sock 數據庫套接文件位置
13.3 修改apache服務,添加虛擬主機
[root@localhost extmail]# vim /usr/local/apache2/conf/httpd.conf
66 User postfix
67 Group postfix
411 NameVirtualHost *:80
412 <VirtualHost *:80>
413 ServerName mail.wisefund.com
414 DocumentRoot /usr/local/apache2/htdocs/extmail/html/
415 ScriptAlias /extmail/cgi/ "/usr/local/apache2/htdocs/extmail/cgi/"
416 Alias /extmail "/usr/local/apache2/htdocs/extmail/html/"
417 </VirtualHost>
這裏由於前面我們並沒有啓用Suexec 所以我們沒有在虛擬主機中添加 SuexecUerGroup postfix postfix
重啓apache服務:
[root@localhost extmail]# /usr/local/apache2/bin/apachectl restart
13.4 Extmail無法訪問問題原因
到這一步很多網上的文檔都會說這時候只要在客戶端訪問 http://mail.wisefund.com 就可以看到ExtMail的登錄界面,但是經過我很多次實踐改動配置得到的結果都是訪問頁面不存在404的錯誤提示頁面,一度我曾認爲可能是我之前編譯的那三個倚賴包有問題,或者是我的PHP有問題,以及cgi權限問題都想到但是結果依然是404頁面不存在,但是我可以很正常的看到訪問http://mail.wisefund.com時候頁面確實是跳轉到了http://mail.wisefund.com/extmail/cgi/index.cgi這個目錄,而且我這個目錄中文件確實存在,沒有任何問題,經過我多次嘗試終於找到原因如果要成功的訪問到這個頁面就必須把Extman裝上,並且在apache配置文件中寫入extman的路徑這樣我終於如願以償的看到了期望已久的ExtMail的登錄界面。(但是本人在安裝玩extman後任無法訪問,原因可能是沒有創建dns域,所以無法解析域名。此時就需要在測試主機上創建一個零時域名解析服務,做法:C:\Windows\System32\drivers\etc下用記事本編輯hosts文件,在最下面添加 192.168.2.1 mail.wisefund.com,然後保存退出)
14.1 安裝包
現安裝四個依賴包:
[root@localhost ~]# tar -zxvf GD-2.46.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/GD-2.46/
[root@localhost GD-2.46]# perl Makefile.PL
[root@localhost GD-2.46]# make
[root@localhost GD-2.46]# make install
[root@localhost ~]# tar -zxvf File-Tail-0.99.3.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/File-Tail-0.99.3/
[root@localhost File-Tail-0.99.3]# perl Makefile.PL
[root@localhost File-Tail-0.99.3]# make
[root@localhost File-Tail-0.99.3]# make install
[root@localhost ~]# rpm -ivh rrdtool-1.2.23-3.el5.i386.rpm
[root@localhost ~]# rpm -ivh rrdtool-perl-1.2.23-3.el5.i386.rpm
[root@localhost ~]# tar -zxvf extman-0.2.5.tar.gz -C /usr/local/apache2/htdocs/
[root@localhost ~]# cd /usr/local/apache2/htdocs/
[root@localhost htdocs]# mv extman-0.2.5 extman
[root@localhost htdocs]# cd extman
[root@localhost extman]# chown -R postfix:postfix cgi
臨時回話保存目錄:
[root@localhost extman]# mkdir /tmp/extman
[root@localhost extman]# chown -R postfix:postfix /tmp/extman
14.2 修改配置文件
[root@localhost extman]# vim /usr/local/apache2/htdocs/extman/webman.cf
2 SYS_CONFIG = /usr/local/apache2/htdocs/extman/ 程序根目錄
5 SYS_LANGDIR = /usr/local/apache2/htdocs/extman/lang 語言包文件目錄
8 SYS_TEMPLDIR = /usr/local/apache2/htdocs/extman/html 系統模版目錄
12 SYS_MAILDIR_BASE = /mailbox 郵件數據存放路徑
127 SYS_MYSQL_USER = webman 訪問mysql數據庫的用戶
128 SYS_MYSQL_PASS = webman 訪問mysql數據庫的用戶的密碼
129 SYS_MYSQL_DB = extmail 使用的數據庫名稱
130 SYS_MYSQL_HOST = localhost 數據庫服務器地址
131 SYS_MYSQL_SOCKET = /tmp/mysql.sock 數據庫套接文件位置
14.3 調整apache主配文件。添加extman相關目錄別名
[root@localhost extman]# vim /usr/local/apache2/conf/httpd.conf
411 NameVirtualHost *:80
412 <VirtualHost *:80>
413 ServerName mail.wisefund.com
414 DocumentRoot /usr/local/apache2/htdocs/extmail/html/
415 ScriptAlias /extmail/cgi/ "/usr/local/apache2/htdocs/extmail/cgi/"
416 Alias /extmail "/usr/local/apache2/htdocs/extmail/html/"
417 ScriptAlias /extman/cgi "/usr/local/apache2/htdocs/extman/cgi/"
418 Alias /extman "/usr/local/apache2/htdocs/extman/html/"
419 </VirtualHost>
重啓apache服務:
[root@localhost extman]# /usr/local/apache2/bin/apachectl restart
14.4 現在在客戶端訪問
http://mail.wisefund.com 就可以看見ExtMail的登錄界面了。
在客戶端訪問
http://mail.wisefund.com/extman 就可以看見Extman後臺管理登錄界面了
默認管理員賬戶:[email protected]
默認密碼:extmail*123*
[root@localhost ~]# ln -f /usr/local/apache2/htdocs/extman/addon/mailgraph_ext/mailgraph-init /usr/sbin/
[root@localhost ~]# ln -sf /usr/local/apache2/htdocs/extman/addon/mailgraph_ext/qmonitor-init /usr/sbin/
[root@localhost ~]# cp -a /usr/local/apache2/htdocs/extman/addon/mailgraph_ext /usr/local/
[root@localhost ~]# mailgraph-init start
[root@localhost ~]# qmonitor-init start
[root@localhost ~]# echo "/usr/sbin/mailgraph-init start" >>/etc/rc.d/rc.local
[root@localhost ~]# echo "/usr/sbin/qmonitor-init start" >>/etc/rc.d/rc.local
16.1 根據客戶端的主機名/地址過濾郵件
首先在/etc/postfix/main.cf使用smtpd_client_restrictions配置參數,設置限制條件:
[root@localhost ~]# vim /etc/postfix/main.cf
655 smtpd_client_restrictions = check_client_access hash:/etc/postfix/access
設置客戶端地址訪問控制列表:
[root@localhost ~]# vim /etc/postfix/access
407 192.168.2 REJECT
408 192.168.2.1 OK
409 a.org REJECT
將access文件轉換爲hash數據庫文件:
[root@localhost ~]# postmap /etc/postfix/access
[root@localhost ~]# postfix stop
[root@localhost ~]# postfix start
進行測試:
經測試來自b.org的被過濾掉:
可以收到來自a.org的郵件:
16.2 根據客戶機HELO 信息中的主機名地址過濾郵件
[root@localhost ~]# vim /etc/postfix/main.cf
要求必須使用helo命令:
656 smtpd_helo_required = yes
拒絕使用無效主機名的主機:
657 smtpd_helo_restrictions = reject_invalid_hostname
[root@localhost ~]# postfix reload
16.3 根據發件人的地址過濾郵件
[root@localhost ~]# vim /etc/postfix/main.cf
656 smtpd_helo_required = yes
657 smtpd_helo_restrictions = mail.wisefund.com
指定mysql類型的查詢表文件和別名文件:
658 smtpd_sender_login_maps =
659 mysql:/etc/postfix/mysql_virtual_sender_maps.cf,
660 mysql:/etc/postfix/mysql_virtual_alias_maps.cf
661 smtpd_sender_restrictions =
662 permit_mynetworks,
發件人與登錄用戶不匹配時拒絕:
663 reject_sender_login_mismatch,
發件人地址不屬於合法FQDN時拒絕:
664 reject_non_fqdn_sender,
發件人地址未知或不存在時拒絕:
665 reject_unknown_sender_domain,
用於指向含有郵件地址域名地址的查詢表,即rcpt to: 提供的信息 ---實際上是收件人地址:
666 check_sender_access hash:/etc/postfix/sender_access
667 inet_interfaces = 192.168.2.1,127.0.0.1
[root@localhost ~]# vim /etc/postfix/sender_access
user1@ REJECT
user2@ REJECT
[root@localhost postfix]# postfix reload
[root@localhost postfix]# postmap /etc/postfix/sender_access
16.4 根據收件人的地址過濾郵件
首先在/etc/postfix/main.cf配置收件人的地址過濾郵件
655 smtpd_client_restrictions = check_client_access hash:/etc/postfix/access
656 smtpd_helo_required = yes
657 smtpd_helo_restrictions = mail.wisefund.com
658 smtpd_sender_login_maps =
659 mysql:/etc/postfix/mysql_virtual_sender_maps.cf,
660 mysql:/etc/postfix/mysql_virtual_alias_maps.cf
661 smtpd_sender_restrictions =
662 permit_mynetworks,
663 reject_sender_login_mismatch,
664 reject_non_fqdn_sender,
665 reject_unknown_sender_domain,
666 check_sender_access hash:/etc/postfix/sender_access
允許本郵件系統發出的郵件:
667 smtpd_recipient_restrictions =
668 permit_mynetworks,
允許通過sasl認證的用戶作爲發件人:
669 permit_sasl_authenticated,
收件人地址域不包括在postfix授權網絡內時拒絕:
670 reject_unauth_destination,
收件人地址域不屬於合法FQDN時拒絕:
671 reject_non_fqdn_recipient,
收件人地址域或不存在時拒絕:
672 reject_unknown_recipient_domain
[root@localhost ~]# postfix reload
16.5 基於郵件內容的過濾
1) 安裝MailScanner 掃描調度工具
[root@localhost ~]# tar -zxvf MailScanner-4.84.3-1.rpm.tar.gz
[root@localhost ~]# cd MailScanner-4.84.3-1
[root@localhost MailScanner-4.84.3-1]# ./install.sh
2) 修改配置文件MailScanner
[root@localhost MailScanner-4.84.3-1]# vim /etc/MailScanner/MailScanner.conf
131 Run As User = postfix
135 Run As Group = postfix
165 Incoming Queue Dir = /var/spool/postfix/hold
169 Outgoing Queue Dir = /var/spool/postfix/incoming
196 MTA = postfix
2231 Required SpamAssassin Score = 7
2499 High Scoring Spam Actions = delete forward [email protected]
3) 配置Postfix 支持調用MailScanner
[root@localhost MailScanner-4.84.3-1]# vim /etc/postfix/main.cf
517 header_checks = regexp:/etc/postfix/header_checks
[root@localhost MailScanner-4.84.3-1]# vim /etc/postfix/header_checks
420 /^Received:/HOLD
4) 調整郵件過濾隊列的目錄屬主、屬組,並啓動MailScanner 服務程序
[root@localhost ~]# chown -R postfix.postfix /var/spool/MailScanner/incoming/
[root@localhost ~]# chown -R postfix.postfix /var/spool/MailScanner/quarantine/
[root@localhost ~]# service MailScanner start
[root@localhost ~]# chkconfig --level 35 MailScanner on
16.5.2 安裝並配置SpamAssassin 垃圾郵件過濾器
1) 安裝並配置SpamAssassin 垃圾郵件過濾器
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
[root@localhost ~]# cd /mnt/cdrom/Server/
[root@localhost Server]# yum install -y spamassassin
2) 修改配置文件local.cf
(位於“/etc/mail/spamassassin/local.cf”,一般不需要進行任何修改,保持默認設置即可)
3) 啓動SpamAssassin 服務
[root@localhost Server]# service spamassassin start
[root@localhost Server]# chkconfig --level 35 spamassassin on
15.5.3 安裝並配置F-Port 病毒查殺軟件
1) 安裝F-Port 軟件包安裝過程中出現提示是按回車鍵接受默認設置:
[root@localhost ~]# tar -zxvf fp-Linux-i686-ws.tar.gz -C /opt/
[root@localhost ~]# cd /opt/f-prot/
[root@localhost f-prot]# ./install-f-prot.pl
2) 升級F-Port 病毒庫(服務器要能夠訪問Internet 互聯網):
[root@localhost f-prot]# /opt/f-prot/fpupdate
[root@localhost f-prot]# crontab -e
00 8 * * * /opt/f-prot/fpupdate
[root@localhost f-prot]# service crond restart
[root@localhost f-prot]# chkconfig --level 35 crond on
16.1 首頁概況
登錄進去首頁顯示系統管理員列表
17.2 添加用戶
基礎設置 設置用戶名,後面可選用戶所在的域。
用戶的磁盤限額、網絡磁盤限額以及過期日期是否激活等(默認磁盤、網絡磁盤限額爲5M)
設置完基本信息保存修改會提示密碼錯誤,所有要設置密碼之後纔可以保存修改。
設置密碼、密碼找回問題以及是否禁止用戶修改密碼
這裏一般保持默認即可
17.3 添加別名
可以添加別名、別名所在的域,設置多個目標地址 提示 目標地址每行只能寫一個 並激活
17.4 添加域
基礎設置 設置域名、域名描述、最大用戶、最大別名、最大限額、最大網絡磁盤限額、傳輸方式、還有是否允許自由註冊(如果勾上這個選項的話,在ExtMail登錄頁面下面有一個免費註冊郵箱就可以註冊,如果不勾的話註冊免費郵箱時候就會提示域名不提供註冊服務!)是否激活域名、最後是域名過期日期。
設置域名新賬戶默認限額、網絡磁盤限額、新賬戶默認生命週期以及新賬戶默認開啓的服務
17.5 添加管理員
管理員名稱、通用名、過期日期是否激活等。同普通用戶一樣需要設置密碼才能保存修改。
同普通用戶一樣也是 設置密碼、找回密碼問題與答案是否禁止用戶修改密碼等
可以設置管理員管理的域名增加、刪除域名等
17.6 羣發郵件
按照提示說明可以設置郵件的羣發,可用於通知類型的郵件
17.7 圖像日誌
在這裏可以查看各類日誌分析郵件服務器是否正常
18.1 郵件用戶登錄界面首頁
18.2 偏好設置
這裏可以設置個人的信息包括姓名、密碼及密碼問題等
其他選項卡同其他的郵件服務器一樣。
注意:一直登陸不上extman,提示校驗碼不對,是因爲系統時間和客戶端時間不對
第十九章 安裝過程出現問題解決:
19.1 apache啓動出錯:
[root@localhost ~]# /usr/local/apache2/bin/apachectl restart
[root@localhost ~]# fuser -k -n tcp 80
[root@localhost ~]# /usr/local/apache2/bin/apachectl start
19.2 postfix不支持mysql的解決辦法:
postconf –m
btree
cidr
environ
hash
nis
proxy
regexp
static
unix
所出錯誤:
[root@localhost ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
[root@localhost ~]# tail /var/log/maillog
Apr 11 09:08:14 localhost postfix/smtpd[27864]: fatal: unsupported dictionary type: mysql
Apr 11 09:08:15 localhost postfix/master[27770]: warning: process /usr/libexec/postfix/smtpd pid 27864 exit status 1
Apr 11 09:08:15 localhost postfix/master[27770]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
Apr 11 09:08:28 localhost postfix[27879]: fatal: usage: postfix [-c config_dir] [-Dv] command
Apr 11 09:09:19 localhost postfix/smtpd[27898]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
解決辦法:
[root@localhost postfix-2.6.2]# cd /usr/local/src/
[root@localhost postfix-2.6.2]# cd postfix-2.6.2
[root@localhost postfix-2.6.2]# make clean
[root@localhost postfix-2.6.2]# cd ..
[root@localhost src]# rm -rf postfix-2.6.2
[root@localhost ]# tar -zxvf postfix-2.6.2.tar.gz -C /usr/local/src/
[root@localhost ]# cd /usr/local/src/
[root@localhost src]# cd postfix-2.6.2
[root@localhost postfix-2.6.2]# make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS' 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2 -lssl -lcrypto'
[root@localhost postfix-2.6.2]# make
[root@localhost postfix-2.6.2]# make install
[root@localhost postfix-2.6.2]# newaliases
[root@localhost postfix-2.6.2]# postconf -m
btree
cidr
environ
hash
mysql
nis
proxy
regexp
static
unix