本文是在RHEL5.0上完成的實驗
在查看了衆多文章後,自己的郵件系統終於出爐呢..一路艱辛的走過,再次原與大家分享一下安裝經驗
準備工作,
# service iptables stop
確保/etc/sysconfig/saslauthd 中 MECH = shadow
確保/etc/sysconfig/selinux 中 SELINUX=disabled
-1.安裝LAMP環境
LAMP就是Linux+Apache+MySql+PHP搭建的動態網站環境,是目前互聯網上非常流行的一個網頁服務組合。
網上有很多教程搭建LAMP環境,基本上都是編譯安裝的,其實對新手來說只需要瞭解LAMP環境的一些特性,RMP安裝相對來說容易上手點,只需要安裝幾個光盤上的安裝包就可以順利完成LAMP的搭建。
安裝Apache
[root@linux-a ~]# rpm -ivh /media/Server/httpd-2.2.3-6.el5.i386.rpm
warning: /media/Server/httpd-2.2.3-6.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
libapr-1.so.0 is needed by httpd-2.2.3-6.el5.i386
libaprutil-1.so.0 is needed by httpd-2.2.3-6.el5.i386
[root@linux-a ~]#
提示需要libapr-1.so.0和libaprutil-1.so.0的支持
安裝libapr-1.so.0
[root@linux-a ~]# rpm -ivh /media/Server/apr-1.2.7-11.i386.rpm
warning: /media/Server/apr-1.2.7-11.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:apr ########################################### [100%]
apr-util-1.2.7-6.i386.rpm 需要postgresql-libs的支持
安裝libpq.so.4
[root@linux-a ~]# rpm -ivh /media/Server/postgresql-libs-8.1.4-1.1.i386.rpm
warning: /media/Server/postgresql-libs-8.1.4-1.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:postgresql-libs ########################################### [100%]
[root@linux-a ~]#
安裝libaprutil-1.so.0
[root@linux-a ~]# rpm -ivh /media/Server/apr-util-1.2.7-6.i386.rpm
warning: /media/Server/apr-util-1.2.7-6.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:apr-util ########################################### [100%]
[root@linux-a ~]#
安裝Apache
[root@linux-a ~]# rpm -ivh /media/Server/httpd-2.2.3-6.el5.i386.rpm
warning: /media/Server/httpd-2.2.3-6.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:httpd ########################################### [100%]
[root@linux-a ~]#
安裝MySql
mysql需要perl(DBI)和perl-DBD-MySQL的支持,因此先安裝perl-DBI及perl-DBD-MySQL
perl-DBI安裝
[root@linux-a ~]# rpm -ivh /media/Server/perl-DBI-1.52-1.fc6.i386.rpm
warning: /media/Server/perl-DBI-1.52-1.fc6.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:perl-DBI ########################################### [100%]
[root@linux-a ~]#
perl-DBD-MySQL安裝
[root@linux-a ~]# rpm -ivh /media/Server/perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
warning: /media/Server/perl-DBD-MySQL-3.0007-1.fc6.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:perl-DBD-MySQL ########################################### [100%]
[root@linux-a ~]#
開始安裝mysql
[root@linux-a ~]# rpm -ivh /media/Server/mysql-5.0.22-2.1.i386.rpm
warning: /media/Server/mysql-5.0.22-2.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:mysql ########################################### [100%]
[root@linux-a ~]#
安裝mysql server
[root@linux-a ~]# rpm -ivh /media/Server/mysql-server-5.0.22-2.1.i386.rpm
warning: /media/Server/mysql-server-5.0.22-2.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:mysql-server ########################################### [100%]
[root@linux-a ~]#
初始化MySql數據庫
[root@linux-a ~]# mysql_install_db
Installing all prepared tables
Fill help tables
To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h linux-a.test.com password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:
cd sql-bench ; perl run-all-tests
Please report any problems with the /usr/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
[root@linux-a ~]#
修改mysql配置文件
[root@linux-a ~]# cp /usr/share/doc/mysql-server-5.0.22/my-medium.cnf /etc/my.cnf
更多設置請參考 [Redhat Linux下MySql數據庫的安裝配置及簡單操作]
安裝php
PHP需要libgmp.so.3、php-cli、php-common的支持
[root@linux-a ~]# rpm -ivh /media/Server/php-5.1.6-5.el5.i386.rpm
warning: /media/Server/php-5.1.6-5.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
libgmp.so.3 is needed by php-5.1.6-5.el5.i386
php-cli = 5.1.6-5.el5 is needed by php-5.1.6-5.el5.i386
php-common = 5.1.6-5.el5 is needed by php-5.1.6-5.el5.i386
libgmp.so.3安裝
[root@linux-a ~]# rpm -ivh /media/Server/gmp-4.1.4-10.el5.i386.rpm
warning: /media/Server/gmp-4.1.4-10.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:gmp ########################################### [100%]
安裝php-common
[root@linux-a ~]# rpm -ivh /media/Server/php-common-5.1.6-5.el5.i386.rpm
warning: /media/Server/php-common-5.1.6-5.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:php-common ########################################### [100%]
[root@linux-a ~]#
安裝php-cli
[root@linux-a ~]# rpm -ivh /media/Server/php-cli-5.1.6-5.el5.i386.rpm
warning: /media/Server/php-cli-5.1.6-5.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:php-cli ########################################### [100%]
[root@linux-a ~]#
安裝PHP
[root@linux-a ~]# rpm -ivh /media/Server/php-5.1.6-5.el5.i386.rpm
warning: /media/Server/php-5.1.6-5.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:php ########################################### [100%]
[root@linux-a ~]#
另外還需要安裝PHP-MySql,PHP-MySql需要php-pdo的支持
安裝php-pdo
[root@linux-a ~]# rpm -ivh /media/Server/php-pdo-5.1.6-5.el5.i386.rpm
warning: /media/Server/php-pdo-5.1.6-5.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:php-pdo ########################################### [100%]
[root@linux-a ~]#
安裝PHP-MySql
[root@linux-a ~]# rpm -ivh /media/Server/php-mysql-5.1.6-5.el5.i386.rpm
warning: /media/Server/php-mysql-5.1.6-5.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:php-mysql ########################################### [100%]
[root@linux-a ~]#
測試配置:
安裝好上面之後還需要安裝以下rpm包
php-mbstring-5.1.6-20.e15.i386.rpm
和
php-imap-5.16-20.e15.i386.rpm
libc-client-2004g-2.2.1.i386.rpm
安裝好後 重新啓動apache
-2.在Linux上使用Postfix+dovecot+MySQL+PostfixAdmin實現基本的郵件服務
2.1. 配置MySQL
添加Postfix數據庫
mysql> CREATE DATABASE postfix;
mysql> GRANT ALL PRIVILEGES ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfix';
2.2 安裝配置PostfixAdmin
到http://sourceforge.net/projects/postfixadmin/下載最新的軟件包。
# tar -zxvf postfixadmin-2.2.1.1.tar.gz
# mv postfixadmin-2.2.1.1 /var/www/postfixadmin
# cd /var/www/postfixadmin
# vim config.inc.php
修改下面相應的參數
$CONF['configured'] = true;
$CONF['default_language'] = 'cn';
$CONF['postfix_admin_url'] = '/postfixadmin';
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = ‘postfix';
$CONF['database_name'] = 'postfix';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['encrypt'] = 'md5crypt';
$CONF['emailcheck_resolve_domain] = 'NO';
重新啓動apache
訪問PostfixAdmin的設置頁http://IP or domain/postfixadmin/setup.php
出現postfixadmin的輸入框
創建Setup password(如:123456)
點擊“Generate password hash”獲取一段加密代碼
將該代碼拷貝到配置文件config.inc.php中的以下配置中
$CONF['setup_password'] = 'change';(用加密代碼替換change)
然後再次訪問PostfixAdmin的設置頁,創建管理員的賬號和密碼
(需要正確輸入之前創建的Setup password才能創建管理員賬號)
訪問PostfixAdmin的登錄頁http://IP or domain>/postfixadmin/
使用管理員賬號登錄後,就可以進行相應的管理工作。
創建之後移動setup.php.bak
mv /var/www/html/postfixadmin/setup.php /var/www/html/postfixadmin/setup.php.bak
2.3. 安裝配置Postfix
Postfix的大部分RPM包都沒有mysql的支持,還好我找到了帶有mysql和sasl支持的RPM包。
軟件包下載地址:http://www.linuxmail.info/postfix-rpm-packages/
如果你無法下載的話,就只能自己編譯安裝了。
停止系統中默認的sendmail服務
# service sendmail stop
# chkconfig sendmail off
# mv /usr/bin/newaliases /usr/bin/newaliases.bak
# mv /usr/bin/mailq /usr/bin/mailq.bak
# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
安裝Postfix
# rpm -ivh postfix-2.5.1-1.mysql.sasl2.vda.rhel5.i386.rpm
給postfix原主配文件改名
#mv /etc/postfix/main.cf /etc/postfix/main.cf.bak
配置Postfix
# vim /etc/postfix/main.cf
#=====================BASE=========================
command_directory = /usr/sbin
data_directory = /var/lib/postfix
myhostname = game222.test.com
mydomain = test.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain
unknown_local_recipient_reject_code = 550
mynetworks = 10.0.0.0/8, 127.0.0.0/8
home_mailbox = Maildir/
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
#=====================Vritual Mailbox settings=========================
virtual_minimum_uid = 100
virtual_mailbox_base = /var/spool/mail
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_domains = $virtual_alias_maps
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:100 #postfix賬號的uid 可以使用id -u postfix 查看
virtual_gid_maps = static:102 #postfix組的gid 可以使用id -g postfix 查看
virtual_transport = virtual
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1
#====================QUOTA========================
message_size_limit = 52428800
mailbox_size_limit = 209715200
virtual_mailbox_limit = 209715200
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later...
virtual_overquota_bounce = yes
#====================SASL========================
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/spool/postfix/private/auth #這裏要和dovecot配置文件中的配置相對應
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
smtpd_banner=$myhostname ESMTP "Version not Available"
#=================================================
readme_directory = no
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
html_directory = no
setgid_group = postdrop
command_directory = /usr/sbin
manpage_directory = /usr/local/man
daemon_directory = /usr/libexec/postfix
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
queue_directory = /var/spool/postfix
mail_owner = postfix
Postfix的mysql配置文件
# vim /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
# vim /etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain
# vim /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username
# vim /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
啓動Postfix
# service postfix start
系統啓動時自動啓動Postfix服務
# chkconfig postfix on
刷新Postfix的配置文件
# postfix reload
查看Postfix的當前配置信息
# postconf -n
查看Postfix的默認配置信息
# postconf -d
2.4. 安裝dovecot用來imap和pop3服務驗證
首先安裝pam-devel
否則(啓動dovecot時出現Auth process died too early)
和mysql_devel的rpm包
否則(編譯安裝時dovecot出現
configure: error: can't build with Mysql support: libmysqlclient not found)
再安裝配置dovecot
如果系統中默認安裝了dovecot,那麼要先把它卸載或停用。
# service dovecot stop
# chkconfig dovecot off
編譯安裝
下載dovecot的源碼包(http://www.dovecot.org/download.html)
# tar zxvf dovecot-1.2.8.tar.gz
# cd dovecot-1.0.rc14
# ./configure --prefix=/usr/local/dovecot --sysconfdir=/usr/local/etc --with-mysql --without-ssl --disable-ipv6
# make
# make install
建立啓動進程所依賴的用戶
# useradd -d /dev/null dovecot -s /bin/false
修改配置文件
拴出dovecot.conf的主配置文件
#mv /usr/local/etc/dovecot.conf /usr/local/etc/dovecot.conf.bak
# vim /usr/local/etc/dovecot.conf
base_dir = /var/run/dovecot
protocols = imap imaps pop3 pop3s
listen = *
disable_plaintext_auth = no
shutdown_clients = yes
log_path = /var/log/dovecot.log
ssl = no
mail_location = maildir:/var/spool/mail/%d/%n
auth default { #注意空格
mechanisms = plain login cram-md5
passdb sql {
args = /usr/local/etc/dovecot-mysql.conf
}
userdb sql {
args = /usr/local/etc/dovecot-mysql.conf
}
socket listen {
client {
path = /var/spool/postfix/private/auth #這裏要和postfix配置文件的配置相對應
mode = 0660
user = postfix
group = postfix
}
}
}
first_valid_uid = 100
dovecot的mysql配置文件
# vim /usr/local/etc/dovecot-mysql.conf
driver = mysql
connect = host=/var/lib/mysql/mysql.sock dbname=postfix user=postfix password=postfix
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir,100 AS uid,102 AS gid FROM mailbox WHERE username = '%u'
修改/var/spool/mail文件的寫入屬性(否則dovecot會啓動不了)
#chmod o+w /var/spool/mail
啓動dovecot
# /usr/local/dovecot/sbin/dovecot
可以把啓動命令寫進/etc/rc.d/rc.local文件,以使系統啓動時能夠自動啓動dovecot服務。
# echo "/usr/local/dovecot/sbin/dovecot" >> /etc/rc.d/rc.local
停止dovecot
只能用kill命令來停止dovecot服務
# ps -aux | grep dovecot
# kill <"/usr/local/dovecot/sbin/dovecot"的pid>
-3. 驗證
POP3驗證
[root@game222 ~]# telnet 10.0.0.2 110
Trying 10.0.0.2...
Connected to game222.test.com (10.0.0.2).
Escape character is '^]'.
+OK Dovecot ready.
IMAP驗證
[root@game222 ~]# telnet 10.0.0.2 143
Trying 10.0.0.2...
Connected to game222.test.com (10.0.0.2).
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN AUTH=LOGIN AUTH=CRAM-MD5] Dovecot ready.
測試POP3接收郵件
(使用postfixadmin建立的用戶)
[root@mail ~]# telnet 10.0.0.2 110
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
+OK Dovecot ready.
user [email protected] //使用郵件用戶“userd”登錄
+OK
pass aaa //輸入userd的密碼userd
+OK Logged in.
List //查看郵件列表
+OK 1 messages:
1 485
.
retr 1 //收取並查看第一封郵件內容,一下內容就不顯示了
quit
+OK Logging out.
Connection closed by foreign host.
客戶端可以使用squirrelmail作爲IMAP客戶端,OE可以使用pop3的客戶端
安裝直接使用rpm包安裝squirrelmail(系統包裏自帶)
安裝好後
修改/etc/squirrelmail/config.php
$squirrelmail_default_language = 'zh_CN'
如果出現問題多查看apache,dovecot,postfix的日誌記錄
上述日誌文件分別爲
/var/log/httpd/error_log
/var/log/dovecot.log
/var/log/maillog
相關下載
http://down.51cto.com/data/181203