2012年7月19日 星期四

dbmail-2.0.11 + mysql

一般的mail server 不外乎是windows exchange server ,linux postfix or sendmail
M 系列的有版權,linux postfix sendmail 管理信件部份不方便~

dbmail + postfix + mysql 的搭配 是一個不錯給個人使用的mail server


os: Centos 4 or 5 以上
mysql: 5.x 以上,支援innodb 即可

Mysql Install : 方便使用Binary 的版本 ~方便


# groupadd mysql
# useradd -g mysql mysql
# Cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql
# cp support-files/my-innodb-heavy-4G.cnf  /etc/my.cnf
# bin/mysqld_safe --user=mysql &
# ./bin/mysqladmin -u root password ‘XXXXXX’ (設定mysql 帳號root 密碼)
# ./bin/mysqladmin -u root -h ‘$hostname’ password 'XXXXXX'
# quit

安裝 DBmail (2.0.11)  官網 (目前版本至3.x)


     (a)安裝dbmail mysql schema
# cd dbmail-2.0.11
# /usr/local/mysql/bin/mysqladmin create dbmail -u root –p
# mysql -u root –p
# GRANT ALL ON *.* to dbmail@localhost identified by 'XXXXXX';
# quit
        # /usr/local/mysql/bin/mysql -u dbmail dbmail -p <               
  sql/mysql/create_tables_innoDB.mysql
     (b)安裝dbmail
                # cd dbmail-2.0.11
                # mkdir /usr/local/dbmail
               # PATH=$PATH:/usr/local/mysql/bin ./configure --prefix=/usr/local/dbmail/ --with-mysql=/usr/local/mysql
                # make
                # make install
                # cp dbmail.conf /etc/
                # vi /etc/dbmail.conf
                輪入hostuserpassdb
                # vi dbmail.conf /etc/


   測試dbmail 是否正常 (以新增user為例)


測試dbmail 是否正常 (以新增user為例)

(c)設定postfix for dbmail
                # vi /etc/postfix/main.cf
                # vi /etc/postfix/master.cf
              # vi /etc/postfix/transport (第一欄請填上所要接收的domain name)
.            # postmap /etc/postfix/transport (重新產生/etc/postfix/transport.db)
(d)測試postfix dbmail 是否正常運作
                1.啟動dbmail-deam
                # /usr/local/dbmail/sbin/dbmail-lmtpd
                # /usr/local/dbmail/sbin/dbmail-imapd
                # /usr/local/dbmail/sbin/dbmail-pop3d
                2.發測試信

安裝 MailScanner 
目的只是為了安全囉
解壓縮後
        # tar –zxvf MailScanner-4.71.10-1.rpm.tar.gz
        # cd MailScanner-4.71.10-1
        # ./install.sh
        # mkdir /var/spool/postfix/hold
# mkdir /var/spool/MailScanner/spamassassin
# chown postfix /var/spool/MailScanner/incoming
# chown postfix /var/spool/MailScanner/quarantine
# chown postfix /var/spool/MailScanner/spamassassin
# chown postfix /var/spool/postfix/hold
        設定MailScanner
        # vi /etc/MailScanner/MailScanner.conf
        修改
        %org-name% = xxx
        %org-long-name% = xxx
        %web-site% = www.xxxcom.tw
       Max Children (最多處理程序) = 10
        Run As User = postfix
        Run As Group = postfix
        Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix
Virus Scanning = no
Dangerous Content Scanning = no
Spam Score Character = *
Always Include SpamAssassin Report = yes
Hostname = spamassin
Notify Senders = no
Notify Senders Of Blocked Filenames Or Filetypes = no
Spam Subject Text = ***Spam From xxxAdmin***
High Scoring Spam Subject Text = ***Spam From xxxAdmin***
Attachment Encoding Charset = big5
High Scoring Spam Actions = deliver header "X-Spam-Status: Yes"
SpamAssassin User State Dir =/var/spool/MailScanner/spamassassin
MCP Checks = yes
# vi /etc/MailScanner/ruel/spam.whitelist.rules (設定白名單)


# vi /etc/MailScanner/spam.assassin.prefs.conf
        ok_locales             zh en
        use_bayes 1
        bayes_path /var/spool/MailScanner/spamassassin/
bayes_file_mode 0644
bayes_auto_learn 1
use_pyzor    1
ifplugin Mail::SpamAssassin::Plugin::Pyzor
pyzor_path /usr/bin/pyzor
endif

安裝 Pyzor
# cd spam_source
# cd pyzor-0.4.0
# python setup.py build
#python setup.py install
#chmod -R a+rX /usr/share/doc/pyzor /usr/lib/python2.3/site-packages/pyzor   /usr/bin/pyzor /usr/bin/pyzord

設定spamassassin rule
        # cd /etc/mail/spamassassin
        # mv local.cf local.cf.bak
        # ln -s /etc/MailScanner/spam.assassin.prefs.conf local.cf
        # cp spam_rule/*.cf /etc/mail/spamassassin/
設定postfix for mailscan
        # vi /etc/postfix/main.cf
        加上 header_checks = regexp:/etc/postfix/header_checks
        # vi /etc/postfix/header_checks
加上 /^Received:/ HOLD
啟動MailScanner
        #chkconfig --levels 2345 sendmail off
# chkconfig --levels 2345 MailScanner on
# chkconfig --levels 2345 spamassassin on
# /etc/init.d/spamassassin start
# /etc/init.d/MailScanner restart

啟動mailscanner 會順帶起postfix 服務
測試
Postfix收到信件後會先hold /var/spool/postfix/hold 並呼叫Mailscanner 來處理
依照MailScanner 只做spam動作而不做掃毒,完成後在丟回給postfix ,最後postfix pipe
dbmail-lmtp 存取至DB


前端呈線頁可以自己寫去接lmtp 或是使用 squirrelmail






1 則留言: