Email System Install Manual
ver1.1
說明 :
測試域名:test.com ; hostname=mail.test.com
系統環境 :
Postfix + PostfixAdmin + MySQL + Apache22 + PHP4 + PHP4-Session + Cyrus-sasl + Courier-imap + Maildrop + Squirrelmail +ClamAV+Amavisd-new+SpamAssassin
1 OS:FreeBSD 6.1 Release
2 mysql-server-5.x:/usr/ports/database/mysql50-server
3 apache-2.2.x:/usr/ports/www/apache22
4 php5-x:/usr/ports/lang/php5
5 php5-session-5.x:/usr/ports/www/php5-session
6 cyrus-sasl-2.x:/usr/ports/security/cyrus-sasl2
7 postfix-2.3.x:/usr/ports/mail/postfix
8 PostfixAdmin :/usr/ports/mail/postfixadmin
9 courier-imap-4.x:/usr/ports/mail/courier-imap
10 maildrop-1.x:/usr/ports/mail/maildrop
11 squirrelmail-1.4.x:/usr/ports/mail/squirrelmail
12 ClamAV(ClamAntiVirus):/usr/ports/security/clamav
13 Amavisd-new:/usr/ports/security/amavisd-new
14 SpamAssassin:/usr/ports/mail/p5-Mail-SpamAssassin
安裝前先更新port tree
系統采用最小化安裝
#cd /usr/ports/net/csup //切換到安裝路徑
#make install clean //安裝並清除過程中不必要的檔案
#cd /usr/share/examples/cvsup //路徑
#cp ports-supfile /root/ //放到/usr下(看你高興要放哪)
#cd /root
#vi ports-supfile //修改原更新站台位置內容如下
default host CHANGE_THIS.FreeBSD.org //官方站台(預設值)
default host cvsup.cn.freebsd.org //改為國內站台,如此下載速度較快
#cd /root //切換路徑
#rehash //才不會出現指令無效訊息(csup: Command not found.)
#csup -L 2 ports-supfile //開始更新
#cd /usr/ports;make fetchindex //或取ports INDEX文件,可以不做這步
安裝 MySQL50 ( Server/Client )
官方網站:http://www.mysql.com
#cd /usr/ports/databases/mysql50-server/
#make install clean
#vi /etc/rc.conf # 設定 mysql 開機自動啟動
mysql_enable="YES"
#/usr/local/etc/rc.d/mysql-server start # 手動啟動 mysql 。
#netstats -na |grep LISTEN # 確認 mysql server 有啟動
tcp4 0 0 *.3306 *.* LISTEN
Setp 2.
安裝 Apache2.2.x
官方網站 http://www.apache.org
#cd /usr/ports/www/apache22
#make install clean
#vi /etc/rc.conf # 設定 apache22 開機自動 up
apache22_enable="YES"
#vi /boot/loader.conf #添加 apache22的accf 選項
accf_http_local=”yes”
#vi /usr/local/etc/apache22/httpd.conf
ServerAdmin [email]test@test.com[/email]
ServerName 127.0.0.1
AddDefaultCharset big5
#/usr/local/sbin/apachectl start
#ps -ax |grep http # 確認 apache 有啟動
70558 ?? Ss 0:00.06 /usr/local/sbin/httpd -k start
70559 ?? S 0:00.01 /usr/local/sbin/httpd -k start
70560 ?? S 0:00.01 /usr/local/sbin/httpd -k start
70561 ?? S 0:00.01 /usr/local/sbin/httpd -k start
Setp 3.
安裝 PHP5 + php5-session + cyrus-sasl2
官方網站 http://www.php.net
#cd /usr/ports/lang/php5
#make install clean
Options for php5.x # 選 apache,debug不選避免zend出錯
[X] APACHE Build Apache Module
#vi /usr/local/etc/apache22/httpd.conf # 修改 apache22 設定讓 php 運行在apache22
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html index.html.var
#cd /usr/local/etc/
#cp php.ini-dist php.ini
#vi php.ini
register_globals =On # 修改 register_globals =Off 變成 On ,squirrelmail 會用得到
#cd /usr/ports/www/php5-session/ # 安裝 php5-session 是 postfixadmin 需要用到的,所以是必須要加裝的
官方網站 http://www.php.net
#make install clean
#apachectl restart # 重新起動 apache
#vi /usr/local/www/apache22/data/index.php
<?
phpinfo();
?>
測試 php5 有無安裝成功: http://192.168.2.130/index.php
# cd /usr/ports/security/cyrus-sasl2 # 安裝 cyrus-sasl
官方網站 http://cyrusimap.web.cmu.edu
# make install WITH_AUTHDAEMON=yes clean
#vi /usr/local/lib/sasl2/smtpd.conf # 配置 sasl SMTP 認證
方案一
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/run/authdaemond/socket
方案二,
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: plain login cram-md5 digest-md5
# saslpasswd2 –c smtpauth@ # 創建用戶smtpauth@,如果不加”@”,將創建形如username@hostname.
Password: # password : 123456
Again (for verification):
# sasldblistusers2 # 查看sasldb2.db
smtpauth@: userPassword
Setp 4.
安裝 Postfix
官方網站 http://www.postfix.org
#cd /usr/ports/mail/postfix
#make install WITH_AUTHDAEMON=yes clean
Postfix configuration options # 只選 SASL2 跟 MySQL
[X] SASL2 Cyrus SASLv2 (Simple Authentication and Security Layer)
[X] MySQL MySQL map lookups (choose version with WITH_MYSQL_VER)
Would you like to activate Postfix in /etc/mail/mailer.conf [n]? y # 選 yes
#vi /etc/rc.conf # 開機自動啟動 postfix
加入:
postfix_enable=”YES”
#echo ‘postfix: root’ >> /etc/aliases
#/usr/local/bin/newaliases
#chown postfix:postfix /etc/opiekeys
#vi /usr/local/etc/postfix/main.cf
myhostname = mail.test.com
mydomain = test.com
myorigin = $mydomain
mydestination = $myhostname localhost localhost.$mydomain
mynetworks = 192.168.2.0/24, 127.0.0.0/8
inet_interfaces = all
relay_domains = $mydestination
virtual_mailbox_base = /var/mailbox/
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:5001
virtual_gid_maps = static:5001
virtual_transport = virtual
transport_maps = mysql:/usr/local/etc/postfix/mysql_virtual_transport_maps.cf
message_size_limit = 15728640
virtual_mailbox_limit = 2097152000
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/usr/local/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
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks
permit_sasl_authenticated
permit_auth_destination
reject_invalid_hostname
reject_unknown_sender_domain
reject_non_fqdn_sender
reject_non_fqdn_recipient
reject_unknown_recipient_domain
reject_unauth_pipelining
reject_unauth_destination
reject
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
smtpd_client_restrictions = permit_sasl_authenticated
reject_non_fqdn_sender
reject_unknown_sender_domain
reject_sender_login_mismatch
smtpd_banner = $myhostname ESMTP "SZ Mail Server"
content_filter = smtp-amavis:[127.0.0.1]:10024
說明:同域多服務器情況
test.com 域下有A(廣州office) 、B(深圳office)兩台mail server ,A保存所有廣州office的郵箱;B 保存所有深圳office的郵箱。
廣州office:所有發往 “廣州office”內部的郵件將由A mail server進行本地投遞,發往 “深圳office” 的郵件將通過transport_maps (mail address list) 指向 B mail server 進行投遞。
深圳office:所有發往 “深圳office”內部的郵件將由B mail server進行本地投遞,發往 “廣州office”的郵件將通過transport_maps (mail address list) 指向 A mail server 進行投遞。
其中:A mail server 的transport_maps 記錄 “深圳office”的所有郵件地址;B mail server的transport_maps 記錄 “廣州office” 的所有郵件地址。
#mkdir /var/mailbox # 建立郵件存放目錄
#pw groupadd vmail -g 5001 # 建立 vmail 這個使用者帳號及群組
#pw useradd vmail -u 5001 -g 5001 -s/sbin/nologin -d/dev/null # 無home目錄及不可登錄系統。
#chown -R vmail:vmail /var/mailbox
#chmod -R ug+rwx,o-rwx /var/mailbox #(chmod –R 770 /var/mailbox)
#vi /usr/local/etc/postfix/mysql_virtual_alias_maps.cf # 建立MySQL 跟 postfix 之間的資料對應關聯文件,總共五個。
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
#vi /usr/local/etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain
#vi /usr/local/etc/postfix/mysql_virtual_transport_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = transport_maps
where_field = mlist
#vi /usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
#vi /usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username
#/usr/local/sbin/postfix start # 啟動 postfix