有鑒於網路上架設FreeBSD的資料非常少,所以小弟自己收集了一些前輩的資料,並且整合起來實際測試無誤後再發表出來供大家參考,若有錯誤,也請各位不吝指正,感謝各位參考

更新時間:2012.03.29

 

  1. 基本環境

此處使用網域名稱:chemical.com.tw

Mail MX為:mail.chemical.com.tw    →指向 60.251.187.199

Web Servermail.chemical.com.tw   →指向 60.251.187.198

Web Mailmail.chemical.com.tw       →指向 60.251.187.199

可利用pkg_info |grep xxxxx 查詢

  1. 已安裝libtool
  2. 已支援PHPApache Server

PHP- extensions 確認以下模組是否已安裝,若尚未安裝,則利用指令重新安裝:

% /usr/ports/lang/php5-extensions

% make config reinstall clean

[X] CTYPE       ctype functions

[X] DOM         DOM support

[X] FILTER      input filter support

[X] FTP         FTP support

[X] GD         GD library support

[X] GETTEXT     gettext library support

[X] HASH       HASH Message Digest Framework

[X] ICONV       iconv support

[X] IMAP       IMAP support

[X] JSON       JavaScript Object Serialization support

[X]] LDAP       OpenLDAP support

[X] MBSTRING   multibyte string support

[X]] MCRYPT     Encryption support

[X] MSSQL       MS-SQL database support

[X] MYSQL       MySQL database support

[X] MYSQLI     MySQLi database support

[X]] OPENSSL     OpenSSL support

[X] PDO         PHP Data Objects Interface (PDO)

[X] PDO_SQLITE PDO sqlite driver

[X] POSIX       POSIX-like functions

[X] SESSION     session support

[X] SIMPLEXML   simplexml support

[X] SNMP       SNMP support

[X] SOCKETS     sockets support

[X] SQLITE     sqlite support

[X] SQLITE3     sqlite3 support

[X] SYSVSHM     System V shared memory support

[X] TIDY       TIDY support

[X] TOKENIZER   tokenizer support

[X] XML         XML support

[X] XMLREADER   XMLReader support

[X] XMLWRITER   XMLWriter support

[X] ZIP         ZIP support

[X] ZLIB       ZLIB support

 

  1. MySQL Server

 

  1. 設定DNS Server正反解,對應需要架設的Mail Server
    1. # cd /etc/namedb/working/chemical.com.tw.hosts

@     IN MX 10 mail.chemical.com.tw.       # 設定Mail Transfer Agent

www   IN A   60.251.187.198                    # 設定Web Server

mail         IN A   60.251.187.199                    # 設定Web Mail對應位置

         

198     IN PTR www.chemical.com.tw.              # Web Server反解對應

199     IN PTR mail.chemical.com.tw.               # Web Mail反解對應

               

要注意網域都必需FQDN方式輸入,MX紀錄可用010,此處指有一台MTA,故優先權設多少都可以

  1. 設定完成之後利用已下指令查詢

查詢MTA是否解析的到

# dig chemical.com.tw MX

出現已下訊息表示成功的解析到

;; ANSWER SECTION:         

chemical.com.tw.             259200 IN     MX       10 mail.chemical.com.tw.

查詢Web Mail是否解析的到

# dig mail.chemical.com.tw

出現已下訊息表示成功的解析到

;; ANSWER SECTION:

mail.chemical.com.tw.         259200 IN     A         60.251.187.199

       

  1. 校正Server時間

先讓主機做第一次時間校正:

# ntpdate time.stdtime.gov.tw

再來需要將ntp服務隨開機啟動,需修改rc.conf

# vi /etc/rc.conf

加入 ntpd_enable=”YES”

啟動 ntpd服務

# /etc/rc.d/ntpd start

 

  1. 關閉Sendmail Server

先查看 sendmail 有無啟動

# sockstat |grep 25

root     sendmail   1373   4 tcp4   127.0.0.1:25         *:*

若有,則關閉之,並在開機始也不啟動 sendmail

[root@rhel200 root]# service sendmail stop

Shutting down sendmail: [ OK ]

Shutting down sm-client: [ OK ]

# vi /etc/rc.conf

If you not need sendmail anymore, please add in your rc.conf

(如果你不再需要sendmail,參考以下設定來修改你的rc.conf )

sendmail_enable="NO"

sendmail_submit_enable="NO"

sendmail_outbound_enable="NO"

sendmail_msp_queue_enable="NO"

 

And you can disable some sendmail specific daily maintenance routines inyour etc/periodic.conf file

(你還可以在vi /etc/periodic.conf裡關掉某些sendmail才會用到的設定 )

沒有periodic.conf ? 那就從 /etc/defaults/ 下複製一個到 /etc下,然後再修改

 

# 150.clean-hoststat

daily_clean_hoststat_enable="NO"

# 440.status-mailq

daily_status_include_submit_mailq="NO"

# 460.status-mail-rejects

daily_status_mail_rejects_enable="NO"

# 500.queuerun

daily_submit_queuerun="NO"

關於 Sendmail rc.conf 內設定 NoneNoYes 意義?

None:將 Sendmail 完全關閉

NOSendmail 只監聽 Localhost (127.0.0.1:25)

YES:啟用 Sendmail

 

  1. 安裝Postfix

# cd /usr/ports/mail/postfix; make install clean

  1. 勾選以下項目:

[X] PCRE     Perl Compatible Regular Expressions

[X] SASL2     Cyrus SASLv2 (Simple Auth. and Sec. Layer)

[X] DOVECOT2   Dovecot 2.x SASL authentication method

[X] TLS       Enable SSL and TLS support

[X] MYSQL     MySQL maps (choose version with WITH_MYSQL_VER)

[X] OPENLDAP OpenLDAP maps (choose ver. with WITH_OPENLDAP_VER)

[X] LDAP_SASL Enable OpenLDAP client-to-server auth via SASL

[X] INST_BASE Install into /usr and /etc/postfix

 

安裝cyrus-sasl 2.1.25_1時需加選

[X] MYSQL              Use MySQL

 

安裝完成後須回答下列問題:

Would you like to activate Postfix in /etc/mail/mailer.conf [n]? y

(是否要把postfix加到mailer.conf裡,答y)

 

  1. 若有選擇安裝[X] DOVECOT2   Dovecot 2.x SASL authentication method,預設會將devecot 2.0.15也安裝完成

 

  1. 設定開機啟動postfixdevecot

% vi /etc/rc.conf

加入

postfix_enable="YES"

 

  1. 安裝 Cyrus-Sasl2-Saslauthd 套件 2.1.25

# cd /usr/ports/security/cyrus-sasl2-saslauthd   //切換至套件路徑

# make install clean                             //安裝 SASL2 套件

[X] HTTPFORM Enable HTTP form authentication

 

使用 SASL 功能記得在 /etc/rc.conf 內加上 saslauthd_enable="YES" (加在postfix_enable之前)

 

  1. 設定 Postfix 能讀取 SASL 設定檔

查看 SASL 設定檔知道其擁有人 (owner) 及群組 (groups) cyrus 因此我們將 postfix 加入此群組 (cyrus) 內,以便屆時 postifx 服務能順利讀取 SASL 設定檔。

# ls -l /usr/local/etc/sasldb*                   //查看 sasldb 權限

-rw-r----- 1 cyrus   mail 16384 7 27 11:36 /usr/local/etc/sasldb2.db

 

修改群組 (group) 檔案將 postfix 加入 cyrus 群組

# vi /etc/group                                   //修改群組檔案
cyrus:*:60:postfix                               // postfix 加入 cyurs 群組內

 

  1. 建立 smtpd寄信驗證檔

# vi /usr/local/lib/sasl2/smtpd.conf                       //修改 SMTP 設定檔

log_level: 3                                                                                  #設定log檔紀錄等級

pwcheck_method: saslauthd                                                   #修改認證方法為SASL

mech_list: plain login cram-md5 digest-md5                                #設定登入方式有哪幾種

 

  1. Postfix基本設定

這樣就算安裝完成...接下來是這定主要的設定都在/usr/local/etc/postfix/main.cf下,其他的設定檔也都在這個目錄中

修改main.cf設定檔:

# vi /etc/postfix/main.cf

修正以下參數

#主機名稱

myhostname = mail.chemical.com.tw

#網域名稱(若使用虛擬網域時,可不需設定)

mydomain = chemical.com.tw

#設定郵件寄出時顯示@後面的值(若使用虛擬網域時,可不需設定)

myorigin = $mydomain

# 設置postfix服務監聽的網路介面,預設為全部,不開全部則webmail會無法使用

inet_interfaces = all

mydestination = $myhostname, localhost.$mydomain, localhost(若使用虛擬網域時,可不需設定)

#此參數代表只要寄信給以下三者之一,postfix都會收下此信

abc@chemical.com.tw

abc@localhost.chemical.com.tw

abc@localhost

#設定SMTP要開放的網路型態

mynetworks_style = subnet

#設定SMTP要開放的工作網段 (本機IP或本地端網段)

mynetworks = 127.0.0.1, 192.168.1.15, 60.251.187.199

#可轉寄郵件的信任網段 (工作網段設定為IP時,可不需設定)

relay_domains = mynetworks

# 使用者信箱儲存型態(若使用虛擬網域時,可不需設定)

home_mailbox = Maildir/

#使用者的別名檔(若使用虛擬網域時,可不需設定)

alias_maps = hash:/etc/mail/aliases

 

10.配置Postfix供虛擬網域使用

修改以下設定

# vi /etc/postfix/main.cf

#-----------Base Setting Start----------#

biff = no

 

# 設定Postfix核對SPF記錄

smtpd_milters = unix:private/sid-filter

 

# 設定Postfix核對DKIM記錄

smtpd_milters = inet:localhost:10026

 

# 所有進出郵件一律Bcc至以下帳號

always_bcc = backup@chemical.com.tw

 

# 避免always_bccaliases收到重複的信件

enable_original_recipient = no

 

# 設定寄給收件者的郵件自動產生郵件複本寄到指定帳號

recipient_bcc_maps = hash:/etc/postfix/recipient_bcc

 

# 設定寄件者的郵件自動產生郵件複本寄到指定帳號

sender_bcc_maps = hash:/etc/postfix/sender_bcc

 

# 郵件改寫

#canonical_maps = hash:/etc/postfix/canonical

 

# 郵件位址改寫

#masquerade_domains = mail.chemical.com.tw chemical.com.tw

 

# 限制每個信箱的總容量大小

# 5GB

#mailbox_size_limit = 5368709120

 

# 控制每個 Client 的同時連線數

smtpd_client_connection_count_limit = 50

 

# 設定Mynetworks dongsong.com.tw 網域連線數不受限制

smtpd_client_connection_count_limit_exceptions = $mynetworks, .dongsong.com.tw

 

# 關掉的 vrfy 指令。

disable_vrfy_command = yes

 

# virtual 的部分,我們用 pcre 來處理

#virtual_maps = pcre:/usr/local/etc/postfix/virtual

 

# transport 的部分,我們用 hash 來處理:

#transport_maps = hash:/usr/local/etc/postfix/transport

 

# resource:當無法寄出的郵件是由於本身 postfix 的資源(resource)所造成的,

# 例如 queue 檔案無法寫入的錯誤訊息等,則通知 postmaster 該問題!

# software:由於相關軟體的問題造成無法寄出信件時的通知!

notify_classes = resource, software

 

# header_checks = regexp:/etc/postfix/header_checks

#body_checks = regexp:/usr/local/etc/postfix/body_checks

 

# 駐列管理 - 無法傳送的信件在 defer 佇列裡最多保存 1 天,超過時間則退給寄信人

maximal_queue_lifetime = 1d

bounce_queue_lifetime = 12h

smtpd_delay_reject = yes

 

# qmgr 模組每 5 分鐘檢查一次 defer 佇列,查看是否有郵件須排入 active 佇列

queue_run_delay = 5m

 

#-----------Base Setting End------------#

# 開啟 smtp 認證

smtpd_sasl_auth_enable = yes

smtpd_sasl_authenticated_header = yes

smtpd_sasl_type = dovecot

smtpd_sasl_path = /var/spool/postfix/private/auth

 

# 不允許任何非匿名的使用者

smtpd_sasl_security_options = noanonymous

 

# sasl的本地網域

smtpd_sasl_local_domain = $mydomain

 

# 保持client端的相容性,例如MSOE4

broken_sasl_auth_clients = yes

 

# smtpd_tls_auth_only 是指僅當 postfix 提供 TLS的情形時,才允許 SMTP AUTH

# outlook express 為例,當 smtpd_tls_auth_only 開啟時,若在外寄郵件-SMTP中沒有勾選 SSL 的話,

# 則會郵遞失敗,此功能強迫使用者必須在使用支援 TLS 的情形下,才給予認證通行。

smtpd_tls_auth_only = yes

smtpd_enforce_tls = yes

 

# Enable TLS Connection

smtpd_tls_security_level = may

smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem

smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem

smtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pem

smtpd_tls_loglevel = 3

smtpd_tls_session_cache_timeout = 3600s

smtpd_tls_received_header = yes

tls_random_source = dev:/dev/urandom

 

#########################################

#                   SQL Server 設定                 #

#########################################

# 別名資料庫查表設定

virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-aliases.cf

 

# 判斷收件者是否存在

local_recipient_maps = proxy:mysql:/etc/postfix/mysql-localrecip.cf

 

#########################################

#             虛擬信箱系統                          #

#########################################

# 虛擬信箱的目錄位置

virtual_mailbox_base = /home/vmail

 

# 使用 postfix UID & GID 做為虛擬信箱的管理者

virtual_uid_maps = static:125

virtual_gid_maps = static:125

 

# 虛擬信箱網域對照表查詢設定檔

virtual_mailbox_domains = proxy:mysql:/etc/postfix/vdomains.cf

 

# 虛擬信箱使用者目錄查詢設定檔

virtual_mailbox_maps = proxy:mysql:/etc/postfix/vmailboxs.cf

 

# 設定磁碟配合給虛擬信箱使用者

# 顯示信相容量單位為Bytes

#virtual_mailbox_limit = size_in_bytes

 

# 限制單封郵件的收件人數量

smtpd_recipient_limit = 50

 

# 限制每一封單一郵件的大小

# 30MB

message_size_limit = 41943040

 

# 虛擬信箱容量為限制

# 5GB

#virtual_mailbox_limit = 5368709120

#virtual_mailbox_limit = postfix:mysql:/etc/postfix/vquota.cf

#virtual_mailbox_limit_override = yes

 

# Limits only INBOX part for IMAP

#virtual_mailbox_limit_inbox = yes

#virtual_create_maildirsize = yes

#virtual_mailbox_extended = yes

#virtual_maildir_limit_message = Sorry, the user's mailbox has no space available in their inbox.

#virtual_overquota_bounce = yes

 

# 虛擬信箱傳送郵件方式

#virtual_transport = virtual

 

#########################

#   垃圾郵件過濾機制   #

#########################

# smtp Client 開啟送信前交握協定

smtpd_helo_required = yes

 

# 使用amavisd-new來過濾郵件

content_filter = smtp-amavis:[127.0.0.1]:10024

 

# 拒絕寄件者不存在的郵件

smtpd_reject_unlisted_sender = yes

 

# 拒絕收件者不存在的郵件

smtpd_reject_unlisted_recipient = yes

 

# 不允許對方的連線 IP 沒有反解

# 如果Mail Server架在UTMIP分享器下時,此行需註解掉

# 外部NAT進來的IP會變成是192.168.1.1(Default Gateway),造成反解不到的連線而拒絕外部寄進來的信

#smtpd_sender_restrictions = reject_unknown_client

 

# 以下傳輸限制條件需依照順序排列:

# 順序 1

# 用戶端過濾,拒絕動態 IP 所發出來的信件,只限管理者信任的網段IP才能連結postfix

smtpd_client_restrictions =

        permit_sasl_authenticated

        permit_mynetworks

        reject_unauth_destination

        reject_rbl_client dnsbl.ahbl.org

        reject_rbl_client dnsbl.njabl.org

        reject_rbl_client dnsbl.sorbs.net

        reject_rbl_client aspews.ext.sorbs.net

        reject_rbl_client cbl.abuseat.org

        reject_rbl_client mail2.518.com.tw

        reject_rbl_client bl.spamcop.net

        reject_rbl_client cblless.anti-spam.org.cn=127.0.8.5

        check_client_access hash:/etc/postfix/client_check

 

# 順序 2

# 檢查寄信時的交握協定

smtpd_helo_restrictions =

        permit_sasl_authenticated

        permit_mynetworks

#      reject_unknown_helo_hostname

        reject_non_fqdn_hostname

 

# 順序 3

# 寄件者郵件過慮條件

smtpd_sender_restrictions =

        permit_sasl_authenticated

        permit_mynetworks

        reject_non_fqdn_sender

# 如果Mail Server架在UTMIP分享器下時,此行需註解掉

# 外部NAT進來的IP會變成是192.168.1.1(Default Gateway),造成反解不到的連線而拒絕外部寄進來的信

#     reject_unknown_sender_domain

#     reject_unknown_client

 

# 順序 4

# 收信人郵件過濾條件(白名單)

smtpd_recipient_restrictions =

        permit_sasl_authenticated

        permit_mynetworks

        reject_unauth_destination

        reject_non_fqdn_recipient

        reject_invalid_hostname

        reject_non_fqdn_hostname

        reject_non_fqdn_sender

        reject_non_fqdn_recipient

        reject_unknown_sender_domain

        reject_unknown_recipient_domain

        reject_unauth_destination

        check_client_access hash:/etc/postfix/client_check

 

# 順序 5

# Client不按SMTP各階段正常傳送命令,則拒絕轉遞

smtpd_data_restrictions = reject_unauth_pipelining

 

# 順序 6

# 檢查磁碟用量,不足則拒收郵件

#smtpd_end_of_data_restrictions = check_policy_service unix:private/policy

 

11.新增Postfix的各個對照表

  1. 新增用戶端檢查對照表 # vi /etc/postfix/client_check

#client_check

#拒絕動態IP轉信

/\.dynamic\./ REJECT We can’t allow dynamic IP to relay!

/.*\.indimodels.com/ REJECT We can’t allow indimodels IP to relay!

client_check轉為db檔供postfix對照

# postmap –p client_check

 

  1. 新增收件時產生BCC檢查對照表 # vi /etc/postfix/recipient_bcc

# 設定收件者的郵件自動產生郵件複本寄到指定帳號

# 收件者信箱                   Bcc信箱

service@dongsong.com.tw         sales.ds@dongsong.com.tw

service@chemical.com.tw           tr.group@chemical.com.tw

 

# 國貿人員第一組,Bcc至組長tr.best@chemical.com.tw

tr.best01@chemical.com.tw       tr.best@chemical.com.tw

tr.best06@chemical.com.tw       tr.best@chemical.com.tw

tr.best10@chemical.com.tw       tr.best@chemical.com.tw

tr.best08@chemical.com.tw       tr.best@chemical.com.tw

 

# 國貿人員第二組,Bcc至組長tr.best05@chemical.com.tw

hr.best@chemical.com.tw           tr.best05@chemical.com.tw

tr.best03@chemical.com.tw         tr.best05@chemical.com.tw

tr.best04@chemical.com.tw         tr.best05@chemical.com.tw

tr.best09@chemical.com.tw         tr.best05@chemical.com.tw

assist.best01@chemical.com.tw     tr.best05@chemical.com.tw

 

# dongsong 郵件備份

assist.ds02@dongsong.com.tw       backup@dongsong.com.tw

money@dongsong.com.tw           backup@dongsong.com.tw

sales.ds01@dongsong.com.tw       backup@dongsong.com.tw

sales.ds02@dongsong.com.tw       backup@dongsong.com.tw

sales.ds03@dongsong.com.tw       backup@dongsong.com.tw

sales.ds04@dongsong.com.tw       backup@dongsong.com.tw

sales.ds05@dongsong.com.tw       backup@dongsong.com.tw

sales.ds06@dongsong.com.tw       backup@dongsong.com.tw

xiaomay@dongsong.com.tw           backup@dongsong.com.tw

recipient_bcc轉為db檔供postfix對照

# postmap –p recipient_bcc

 

  1. 新增寄件時產生BCC檢查對照表 # vi /etc/postfix/sender_bcc

# 設定寄件者的郵件自動產生郵件複本寄到指定帳號

# 寄件者信箱                                        Bcc信箱

 

# 國貿人員第一組,Bcc至組長tr.group1@chemical.com.tw

tr.best01@chemical.com.tw               tr.best@chemical.com.tw

tr.best08@chemical.com.tw        tr.best@chemical.com.tw

tr.best10@chemical.com.tw               tr.best@chemical.com.tw

tr.best11@chemical.com.tw                tr.best@chemical.com.tw

 

# 國貿人員第二組,Bcc至組長tr.group2@chemical.com.tw

hr.best@chemical.com.tw                  tr.best05@chemical.com.tw

tr.best03@chemical.com.tw               tr.best05@chemical.com.tw

tr.best04@chemical.com.tw               tr.best05@chemical.com.tw

tr.best06@chemical.com.tw         tr.best05@chemical.com.tw

tr.best09@chemical.com.tw               tr.best05@chemical.com.tw

recipient_bcc轉為db檔供postfix對照

# postmap –p sender_bcc

 

  1. 新增虛擬網域檢查對照表 # vi /etc/postfix/vdomains.cf

# MySQL資料庫主機名稱:

host = localhost

 

# MySQL資料庫帳號:

user = postfix

 

# MySQL資料庫密碼:

password = 123456

 

# MySQL資料庫名稱:

dbname= postfix

 

# 查詢語法

query = SELECT domain FROM domain WHERE domain = '%s'

 

  1. 新增使用者信箱位置對照表 # vi /etc/postfix/vmailboxs.cf

# MySQL資料庫主機名稱:

host = localhost

 

# MySQL資料庫帳號:

user = postfix

 

# MySQL資料庫密碼:

password = 123456

 

# MySQL資料庫名稱:

dbname= postfix

 

# 查詢語法

query = SELECT maildir FROM mailbox WHERE username = '%s'

 

  1. 新增郵件別名檔查詢對照表 # vi /etc/postfix/mysql-aliases.cf

# MySQL資料庫主機名稱:

host = localhost

 

# MySQL資料庫帳號:

user = postfix

 

# MySQL資料庫密碼:

password = 123456

 

# MySQL資料庫名稱:

dbname= postfix

 

# 查詢語法

table = alias

select_field = goto

where_field = address

 

12.建立MySQL資料庫及資料表供postfix使用

# mysql –u root –p                             #使用root登入mysql

mysql> create database postfix;      #建立postfix使用的資料庫

mysql> grant all privileges on postfix.* to 'postfix'@'localhost' identified by 'postfix' with grant option;                                                      #建立使用者postfix,擁有postfix資料庫所有權限

 

13.設定SMTP SSL驗證檔

# mkdir /etc/postfix/ssl               //生成的憑證會放在此處

# cd /etc/postfix/ssl

# openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650

生成smtp憑證檔

Generating a 1024 bit RSA private key

...++++++

...................................++++++

writing new private key to 'smtpd.pem'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:TW

State or Province Name (full name) [Some-State]:Taiwan

Locality Name (eg, city) []:Taoyuan City

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Bestchem International CO. LTD.

Organizational Unit Name (eg, section) []:Second Mail Server

Common Name (eg, YOUR name) []:Chemical.com.tw

Email Address []:mis.best01@chemical.com.tw

 

14.確認 saslauthd 有無啟動

重新啟動sasl

# /usr/local/etc/rc.d/saslauthd restart

# ps -axwu | grep saslauthd             #有以下顯示表示正在啟動中

root     936 0.0 0.0 19352 2772 ?? Is   2:00PM   0:00.01 /usr/local/sbin/saslauthd -a pam

root     937 0.0 0.0 19352 2772 ?? I     2:00PM   0:00.00 /usr/local/sbin/saslauthd -a pam

root     938 0.0 0.0 19352 2772 ?? I     2:00PM   0:00.00 /usr/local/sbin/saslauthd -a pam

root     939 0.0 0.0 19352 2772 ?? I     2:00PM   0:00.00 /usr/local/sbin/saslauthd -a pam

root     940 0.0 0.0 19352 2772 ?? I     2:00PM   0:00.00 /usr/local/sbin/saslauthd -a pam

root     2365 0.0 0.0 6144 1084   0 RL+   3:05PM   0:00.00 grep saslauthd

 

重新啟動Postfix

# /etc/rc.d/postfix restart

 

15.安裝配置dovecot

  1. 如果系統中預設安裝了dovecot,那麼要先把它卸載或停用。

# service dovecot stop

 

  1. 安裝dovecot

# cd /usr/ports/mail/dovecot2

# make install clean (若已經有安裝過則使用指令 make config reinstall clean)

[X] KQUEUE   kqueue(2) support

[X] SSL      SSL support

[ ] GSSAPI   GSSAPI support

[] VPOPMAIL vpopmail support

[X] LDAP     OpenLDAP support

[ ] PGSQL     PostgreSQL support

[X] MYSQL     MySQL support

[] SQLITE   SQLite support

 

  1. 安裝完成之後確認是否有以下使用者

# cat /etc/passwd

dovecot:*:143:143:Dovecot User:/var/empty:/usr/sbin/nologin

dovenull:*:144:144:Dovecot login User:/var/empty:/usr/sbin/nologin

 

  1. 安裝好 dovcot 後,再執行 dovcot 所提供的憑證產生程式 mkcert.sh

# mkdir /etc/ssl/private         //生成的憑證會放在此處

# mkdir /etc/ssl/certs            //生成的憑證會放在此處

# cd /usr/local/share/examples/dovecot/

# vi dovecot-openssl.cnf

修改以下內容

# country (2 letter code)

C=TW

 

# State or Province Name (full name)

ST=Taiwan

 

# Locality Name (eg. city)

L=Taoyuan

 

# Organization (eg. company)

O=Bestchem International CO. LTD

 

# Organizational Unit Name (eg. section)

OU=Mail Server

 

# Common Name (*.example.com is also possible)

CN=Chemical.com.tw

 

# E-mail contact

emailAddress=mis.best01@chemical.com.tw

 

# sh mkcert.sh

如果想研究憑證是如何下指令產生的,可以看 mkcert.sh 內容。

# cd /usr/ports/mail/dovecot/work/dovecot-*/doc/

 

  1. 直接新增dovecot.conf設定檔

# vi /usr/local/etc/dovecot/dovecot.conf

加入以下內容:

# Protocols we want to be serving.

protocols = imap pop3 sieve

 

service imap-login {

        inet_listener imap {

                address = 127.0.0.1

                port = 143

        }

        inet_listener imaps {

                address = *

                port = 993

        }

}

service pop3-login {

        inet_listener pop3 {

                address = 127.0.0.1

                port = 110

        }

        inet_listener pop3s {

                address = *

                port = 995

        }

}

 

# Mail save directory

# 變數意義:%d電子郵件位址的部分域名,如user@domain中的domain%n使用者名稱

# postfix信箱結合,只需要輸入~/Maildir即可

mail_location = maildir:/home/vmail/%d/%n

 

# dovecot's User first UID   #新增設定Dovecot使用者的UID從何開始

first_valid_uid = 125

# dovecot's User first UID   #新增設定Dovecot群組的GID從何開始

first_valid_gid = 125

 

# Directory to Save Error log Message.    #新增設定存放錯誤訊息的位置

# 若不設定,則錯誤訊息將與 /var/log/maillog 合併

#log_path = /var/log/dovecot.log

 

# 將垃圾郵件自動儲存於junk資料夾

plugin {

#      sieve = ~/dovecot.sieve

#      sieve_dir = ~/sieve

#      sieve_global_path = /home/vmail/sieve/dovecot.sievedd

        sieve_before = /usr/local/etc/dovedot/dovecot.sieve

        sieve_after = /usr/local/etc/dovedot/dovecot.sieve

}

 

# 設定user連線IMAP時的最大連線數

mail_max_userip_connections = 30

 

# Should all IMAP and POP3 processes be killed when Dovecot master process shuts down

# Dovecot Master程序因故停止時,中斷所有使用者的聯結

shutdown_clients = yes

 

# 設定舊式的outlook認證方式也可登入Dovecot

protocol pop3 {

         pop3_client_workarounds = outlook-no-nuls oe-ns-eoh

                }

 

# Deny Passwd plaintext    #不允許密碼有明碼

disable_plaintext_auth = yes

 

# Set SSL key files.      #新增設定SSL認證的位置

ssl = yes

ssl_cert = </etc/ssl/certs/dovecot.pem

ssl_key = </etc/ssl/private/dovecot.pem

ssl_cipher_list = ALL:!HIGH:!SSLv2:!EXP

 

# 設定MySQL認證方式

service auth {

        unix_listener /var/spool/postfix/private/auth {

                mode = 0660

                user = postfix

                group = postfix

        }

}

 

passdb sql {

        args = /usr/local/etc/dovecot/dovecot-mysql.conf

        driver = sql

}

userdb sql {

        args = /usr/local/etc/dovecot/dovecot-mysql.conf

        driver = sql

}

 

# 設定localhost本地端認證方式

#auth default {

#auth_mechanisms = plain login

#      passdb sql {

#      args = /usr/local/etc/dovecot/dovecot-mysql.conf

#      }

#

#      userdb sql {

#      args = /usr/local/etc/dovecot/dovecot-mysql.conf

#      }

#

#      socket listen {

#              client {

#                      path = /var/spool/postfix/private/auth

#                      mode = 0660

#                      user = postfix

#                      group = postfix

#              }      

#      }

#}

     

  1. Use MySQL to manager dovecot user使用MySQL管理Dovecot使用者

% vi dovecot-mysql.conf             #新增MySQL連結擋

# 設定連結SQL的驅動

driver = mysql

 

# 連結SQL的使用者名稱等資料

connect = host=localhost dbname=postfix user=postfix password=best6676

 

# 查詢使用者密碼語法

password_query = SELECT password FROM mailbox WHERE username = '%u'

 

# 查詢使用者郵箱目錄,並設定以postfix的權限來寫入目錄

user_query = SELECT maildir, 125 as uid,125 as gid FROM mailbox WHERE username = '%u'

     

  1. 新增垃圾郵件自動分類檔案 % vi dovecot.sieve

require ["fileinto"];

# Move spam to spam folder

if header :contains "X-Spam-Flag" ["YES"] {

   fileinto "Junk";

   stop;

}

 

  1. 啟動dovecot

# /usr/local/etc/rc.d/dovecot start

 

使系統啟動時能夠自動啟動dovecot服務。

# vi /etc/rc.conf

加入 dovecot_enable="YES"

 

如需要停止dovecot

# /usr/local/etc/rc.d/dovecot stop

     

16.安裝PostfixAdmin

  1. 至官網下載postfixAdmin後放入web root doc目錄下,我的設定是 /home/web
  2. 這樣一來就會有 /home/web/postfixadmin的資料夾
  3. 修改postfixadmin設定檔

% vi /home/web/postfixadmin/config.inc.php

# 開啟管理者安裝介面

$CONF['configured'] = true;

 

# 預設使用管理介面的語系

$CONF['default_language'] = 'tw';

 

    # 修改連線至MySQL的帳號資料

$CONF['database_type'] = 'mysql';

$CONF['database_host'] = 'localhost';

$CONF['database_user'] = 'postfix';

$CONF['database_password'] = 'best6676';

$CONF['database_name'] = 'postfix';

 

# 修改使用郵件儲存位置,讓使用者郵件目錄用以下方式存放

# /home/vmail/chemical.com.tw/cedric

# YES: /usr/local/virtual/domain.tld/username@domain.tld

# NO: /usr/local/virtual/username@domain.tld

$CONF['domain_path'] = 'YES';

# If you don't want to have the domain in your mailbox set this to 'NO'.

# Examples:

# YES: /usr/local/virtual/domain.tld/username@domain.tld

# NO: /usr/local/virtual/domain.tld/username

# Note: If $CONF['domain_path'] is set to NO, this setting will be forced to YES.

$CONF['domain_in_mailbox'] = 'NO';

 

# 設定建立網域時的預設值

# 預設網域總共能有幾個別名

$CONF['aliases'] = '10';

# 預設網域總共能有幾個信箱

$CONF['mailboxes'] = '10';

# 預設網域總容量配額單位是MBytes

$CONF['maxquota'] = '1024';

 

# 設定信箱配額,單位是KBytes

$CONF['quota'] = 'YES';

$CONF['quota_multiplier'] = '5120000';

# 當新增使用者時,系統自動寄出的歡迎訊息內容

$CONF['welcome_text'] = <<<EOM

Hi,您好

 

歡迎使用您的新帳戶

Welcome to your new account.

 

假如您有任何使用上的問題,請您洽詢管理者,謝謝

if you have any question of your E-mail, contact Administrator for resolve, thank you.

EOM;

  1. 登入http://網址/postfixadmin/ 新增postfixadmin管理虛擬網域、郵箱的管理者帳號及密碼
  2. 紀錄下網頁上的管理者密碼編碼,往後若需要重新設定則使用http://網址/postfixadmin/setup 登入後管理後台,並且將管理者密碼修改至config.inc.php

$CONF['setup_password'] =

'2a36cbcd7fbae2e04afd73b1283fd02c:364cb1ff0fa55f68ee34bfe9c9cf77a1ca93ba56';

  1. 利用剛才新增的使用者帳號登入 http://網域/postfixadmin,此時便會自動在MySQL中新增postfix所需要用到的各個資料表

 

17.驗證連線

  1. SMTP連線測試

# telnet mail.chemical.com.tw 25

Trying 192.168.1.15...

Connected to mail.chemical.com.tw.

Escape character is '^]'.

220 mail.chemical.com.tw ESMTP Postfix (2.8.7)

ehlo mail.chemical.com.tw

250-mail.chemical.com.tw

250-PIPELINING

250-SIZE 10240000

250-ETRN

250-STARTTLS    ←出現此行表示正在執行SSL連線

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

 

  1. IMAP連線測試

# openssl s_client -connect mail.chemical.com.tw:993

CONNECTED(00000003)

4503:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:/usr/src/secure/lib/libssl/../../../crypto/openssl/ssl/s23_clnt.c:607:

mail# openssl s_client -connect localhost:993

CONNECTED(00000003)

depth=0 /C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw

verify error:num=18:self signed certificate

verify return:1

depth=0 /C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw

verify return:1

---

Certificate chain

0 s:/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw

   i:/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw

---

Server certificate

-----BEGIN CERTIFICATE-----

MIIC/TCCAmagAwIBAgIJAOKcJ3GVmZ0nMA0GCSqGSIb3DQEBBQUAMIG0MQswCQYD

VQQGEwJUVzEPMA0GA1UECBMGVGFpd2FuMRAwDgYDVQQHEwdUYW95dWFuMScwJQYD

VQQKEx5CZXN0Y2hlbSBJbnRlcm5hdGlvbmFsIENPLiBMVEQxFDASBgNVBAsTC01h

aWwgc2VydmVyMRgwFgYDVQQDEw9jaGVtaWNhbC5jb20udHcxKTAnBgkqhkiG9w0B

CQEWGm1pcy5iZXN0MDFAY2hlbWljYWwuY29tLnR3MB4XDTEyMDExMDAyMTgyMVoX

DTEzMDEwOTAyMTgyMVowgbQxCzAJBgNVBAYTAlRXMQ8wDQYDVQQIEwZUYWl3YW4x

EDAOBgNVBAcTB1Rhb3l1YW4xJzAlBgNVBAoTHkJlc3RjaGVtIEludGVybmF0aW9u

YWwgQ08uIExURDEUMBIGA1UECxMLTWFpbCBzZXJ2ZXIxGDAWBgNVBAMTD2NoZW1p

Y2FsLmNvbS50dzEpMCcGCSqGSIb3DQEJARYabWlzLmJlc3QwMUBjaGVtaWNhbC5j

b20udHcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWFhgXAkhIz7MG4/N5B

v76oIYrLaZODUrWulKYsmGmsSrhOT5kSLcUsbeqvNAMVp8aSrszK4e9ERHddq8rS

D1Lk+rcUe/t/RJUOLQr4e0D/mAnOqDrQfoXYFHlSjv0otYZwIBqo3akIt3L75AOs

nynDb1HpjlUnq9Dm5jrj42JfAgMBAAGjFTATMBEGCWCGSAGG+EIBAQQEAwIGQDAN

BgkqhkiG9w0BAQUFAAOBgQAJZhyN1tHnnMZyz7DONt2QqRq1L//IeD8qTydzB7Ma

Hraj2ezXDw87OKR7STQjAbXSf371DixQZRiLJsi8Qo35ax2h2/tFVOZXbvPkHIFF

YphIXjmRYTfHLk9EqXn9SLZf77O/owdzmNYHxWfMowOc+cz7iCDUjwAIZhFEejQ0

gw==

-----END CERTIFICATE-----

subject=/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw

issuer=/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw

---

No client certificate CA names sent

---

SSL handshake has read 926 bytes and written 325 bytes

---

New, TLSv1/SSLv3, Cipher is RC4-SHA

Server public key is 1024 bit

Secure Renegotiation IS supported

Compression: NONE

Expansion: NONE

SSL-Session:

   Protocol   : TLSv1

   Cipher     : RC4-SHA

   Session-ID: 38FEA6712DE95C0525067058982DB39175238FA8FCE4DCA3DAA047F13C083E2C

   Session-ID-ctx:

   Master-Key: 37DFE9F8EB261A1CE69AD73A97D9F327E9E6DE6C57B16A9D44FD4C9AF509AB4D7F74617829BCAE1A4C0DFDA0084F6C08

   Key-Arg     : None

   Start Time: 1326960861

   Timeout     : 300 (sec)

   Verify return code: 18 (self signed certificate)

---

* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.

a001 login cedric@chemical.com.tw cedricdk   #輸入a001 login 使用者@網域密碼,用來測試是否可登入

a001 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in

a001 logout   #登出

* BYE Logging out

a001 OK Logout completed.

closed

      出現以上訊息表示Dovecot IMAP連通

     

  1. POP3連線測試

# openssl s_client -connect mail.chemical.com.tw:995

CONNECTED(00000003)

depth=0 /C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw

verify error:num=18:self signed certificate

verify return:1

depth=0 /C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw

verify return:1

---

Certificate chain

0 s:/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw

   i:/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw

---

Server certificate

-----BEGIN CERTIFICATE-----

MIIC/TCCAmagAwIBAgIJAOKcJ3GVmZ0nMA0GCSqGSIb3DQEBBQUAMIG0MQswCQYD

VQQGEwJUVzEPMA0GA1UECBMGVGFpd2FuMRAwDgYDVQQHEwdUYW95dWFuMScwJQYD

VQQKEx5CZXN0Y2hlbSBJbnRlcm5hdGlvbmFsIENPLiBMVEQxFDASBgNVBAsTC01h

aWwgc2VydmVyMRgwFgYDVQQDEw9jaGVtaWNhbC5jb20udHcxKTAnBgkqhkiG9w0B

CQEWGm1pcy5iZXN0MDFAY2hlbWljYWwuY29tLnR3MB4XDTEyMDExMDAyMTgyMVoX

DTEzMDEwOTAyMTgyMVowgbQxCzAJBgNVBAYTAlRXMQ8wDQYDVQQIEwZUYWl3YW4x

EDAOBgNVBAcTB1Rhb3l1YW4xJzAlBgNVBAoTHkJlc3RjaGVtIEludGVybmF0aW9u

YWwgQ08uIExURDEUMBIGA1UECxMLTWFpbCBzZXJ2ZXIxGDAWBgNVBAMTD2NoZW1p

Y2FsLmNvbS50dzEpMCcGCSqGSIb3DQEJARYabWlzLmJlc3QwMUBjaGVtaWNhbC5j

b20udHcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWFhgXAkhIz7MG4/N5B

v76oIYrLaZODUrWulKYsmGmsSrhOT5kSLcUsbeqvNAMVp8aSrszK4e9ERHddq8rS

D1Lk+rcUe/t/RJUOLQr4e0D/mAnOqDrQfoXYFHlSjv0otYZwIBqo3akIt3L75AOs

nynDb1HpjlUnq9Dm5jrj42JfAgMBAAGjFTATMBEGCWCGSAGG+EIBAQQEAwIGQDAN

BgkqhkiG9w0BAQUFAAOBgQAJZhyN1tHnnMZyz7DONt2QqRq1L//IeD8qTydzB7Ma

Hraj2ezXDw87OKR7STQjAbXSf371DixQZRiLJsi8Qo35ax2h2/tFVOZXbvPkHIFF

YphIXjmRYTfHLk9EqXn9SLZf77O/owdzmNYHxWfMowOc+cz7iCDUjwAIZhFEejQ0

gw==

-----END CERTIFICATE-----

subject=/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw

issuer=/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw

---

No client certificate CA names sent

---

SSL handshake has read 926 bytes and written 325 bytes

---

New, TLSv1/SSLv3, Cipher is RC4-SHA

Server public key is 1024 bit

Secure Renegotiation IS supported

Compression: NONE

Expansion: NONE

SSL-Session:

    Protocol : TLSv1

   Cipher     : RC4-SHA

   Session-ID: 9D509665DFA009491FE3774E6E28E6464F486E07DB0E54DE23AC02003026EE60

   Session-ID-ctx:

   Master-Key: 683A6D5BBCFF5E9505F296C4152D8CF442F504B22FBCDB3EDC74BF5A3D2FC4B196395196F88139CFB5A923745F5AB102

   Key-Arg     : None

   Start Time: 1326961946

   Timeout     : 300 (sec)

   Verify return code: 18 (self signed certificate)

---

+OK Dovecot ready.

quit   #登出

+OK Logging out

closed

出現以上訊息表示Dovecot POP3連通

     

18.安裝p5-IO-tty可透過Webmin修改Postfix設定檔

# cd /usr/ports/devel/p5-IO-Tty/

# make install clean

 

19.安裝amavisd-newspamassassinclamav外佈垃圾郵件及防毒程式

  1. 安裝程式

# cd /usr/ports/mail/amavisd-new; make install clean

# cd /usr/ports/mail/p5-Mail-SpamAssassin; make install clean

# cd /usr/ports/mail/p5-Mail-ClamAV; make install clean

ClamAVports裝不起來則使用 # pkg_add -r p5-Mail-ClamAV 安裝

# cd/usr/ports/security/clamav ; make install clean

 

設定開機後便啟動服務

# vi /etc/rc.conf

amavisd_enable="YES"

clamav_clamd_enable="YES"

clamav_freshclam_enable="YES"

 

  1. 更新ClamAV病毒碼

# /usr/local/bin/freshclam

若出現訊息:

This version of the ClamAV engine is outdated

則需更新ClamAV 程式

# cd/usr/ports/security/clamav ; make deinstall clean #解除安裝

# cd/usr/ports/security/clamav ; make install clean        #重新安裝

 

  1. 修改 amavisd.conf 設定檔

# vi /usr/local/etc/amavisd.conf

        $mydomain = 'chemical.com.tw';   # a convenient default for other settings

        @local_domains_maps = ( [".$mydomain","dongsong.com.tw"] ); # list of all local domains

#$QUARANTINEDIR = '/var/virusmails'; #註解此行 (若未註解則必須定期去資料夾刪除被判定為病毒的郵件)

        $virus_admin = "postmaster\@$mydomain"; # notifications recip.

$mailfrom_notify_admin = "postmaster\@$mydomain"; # notifications sender

$mailfrom_notify_recip = "postmaster\@$mydomain"; # notifications sender

$mailfrom_notify_spamadmin = "postmaster\@$mydomain"; # notifications sender

$final_virus_destiny = D_DISCARD;

$final_banned_destiny = D_DISCARD;

$final_spam_destiny = D_PASS; #!!! D_DISCARD / D_REJECT

$final_bad_header_destiny = D_PASS;

 

  1. 修改 spamassassin 設定檔

# cd /usr/local/etc/mail/spamassassin/

# cp local.cf.sample local.cf

# vi local.cf

        去掉#註解

        #   Add *****SPAM***** to the Subject header of spam e-mails

#   在垃圾信件主旨加上指定文字

rewrite_header Subject *****SPAM 垃圾信件*****

 

#   Set which networks or hosts are considered 'trusted' by your mail

#   server (i.e. not spammers)

#      信任的mail server的網段位置 (就是自己的mail server網段)

trusted_networks 60.251.187.

 

#   Set the threshold at which a message is considered spam (default: 5.0)

#   判定為 spam 所需要的分數

required_score 5.0

 

#   Use Bayesian classifier (default: 1)

#   使用貝氏過濾法

use_bayes 1

 

#   Bayesian classifier auto-learning (default: 1)

#   使用貝氏垃圾信件過濾自動學習

bayes_auto_learn 1

 

  1. master.cf 加入以下設定

# vi /etc/postfix/master.cf

# ===============================================================

# for amavisd-new

smtp-amavis unix -       -         n       -      2         smtp

-o smtp_data_done_timeout=1200

-o smtp_send_xforward_command=yes

-o disable_dns_lookups=yes

 

127.0.0.1:10027 inet   n       -       n         -       -       smtpd

-o content_filter=

-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks,no_milters

-o smtpd_helo_restrictions=

-o smtpd_client_restrictions=

-o smtpd_recipient_restrictions=permit_mynetworks,reject

-o mynetworks=127.0.0.1/32

-o smtpd_authorized_xforward_hosts=127.0.0.1/32

# ================================================================

 

  1. main.cf加入以下設定

# vi /etc/postfix/main.cf

content_filter = smtp-amavis:[127.0.0.1]:10024

 

  1. clamav使用者加入vscan群組中,避免amavisd產生以下錯誤訊息

Oct  3 18:22:22 mail amavis[12603]: (12603-01-26) (!!)run_av (ClamAV-clamd) FAILED - unexpected , output="/var/lib/amavis/tmp/amavis-20101003T182123-12603/parts: lstat() failed: Permission denied. ERROR\n"

Oct  3 18:22:22 mail amavis[12603]: (12603-01-26) (!!)ClamAV-clamd av-scanner FAILED: CODE(0x9015568) unexpected , output="/var/lib/amavis/tmp/amavis-20101003T182123-12603/parts: lstat() failed: Permission denied. ERROR\n" at (eval 86) line 527.

Oct  3 18:22:22 mail amavis[12603]: (12603-01-26) (!!)WARN: all primary virus scanners failed, considering backups

 

# vi /etc/group

        vscan:*:110:clamav

 

  1. 重新啟動服務

# /usr/local/etc/rc.d/clamav-clamd restart

# /usr/local/etc/rc.d/amavisd restart

# /etc/rc.d/postfix restart

 

20.Postfix加上SPF過濾功能

  1. SPF的全名是Sender Policy Framwork,它是一種可以用來檢查SMTP Server是否有偽造其它人的Domain或是虛設一個Domain,假設我的Mail Servermail.chemical.com.tw,要是有某個傢伙一直以我的Domain偽造Mail 的話,哪一天被人家SPAM了都還不知道為什麼呢,因此SPF的出現可以讓Mail Server檢查信件來源是否符合正確的來源,也成為另一種對抗垃圾信的方式

 

  1. 要怎麼做呢?其實很簡單,只要去修改DNS以及Mail Server的設定就可以了!

進入以下網站產生SPF http://www.mailradar.com/spf/

設定mail server位置

選擇含有A記錄

選擇含有MX記錄

PTR記錄官方建議不選擇

輸入A記錄IP

 

 

輸入MX記錄位置

 

 

 

輸入IPV4的網段,或者單一IP亦可

 

 

選擇 –all yes

 

 

 

將產生結果貼入DNS

 

  1. 修改DNS Server,加入以下紀錄

@   TXT "v=spf1 ip4:60.251.187.193/27 a:60.251.187.199 mx:mail.chemical.com.tw ~all"

 

  1. 設定好之後,我們可以用nslookup來檢查一下SPF Record

% nslookup -query=txt mail.chemical.com.tw

Server:           168.95.1.1

Address:         168.95.1.1#53

 

Non-authoritative answer:

chemical.com.tw text = "google-site-verification=lkb0BSeeGRp2AyVYqjfN9VvZ4i1yHDkLw4_IGozNqkg"

chemical.com.tw text = "v=spf1\009ip4:60.251.187.193/27 a:60.251.187.199 mx:mail.chemical.com.tw ~all"

 

Authoritative answers can be found from:

chemical.com.tw nameserver = ns2.chemical.com.tw.

chemical.com.tw nameserver = ns1.chemical.com.tw.

ns1.chemical.com.tw       internet address = 60.251.187.198

ns2.chemical.com.tw       internet address = 60.251.187.198

出現以上訊息表示設定成功

 

  1. 接下來設定postfix

# cd /usr/ports/mail/sid-milter/ && make install clean

 

  1. 接下來在 /etc/rc.conf 加入下面這幾行

# vi /etc/rc.conf

miltersid_enable="YES"

miltersid_flags="-r 1 -u postfix"

miltersid_pid="/var/run/sid-filter.pid"

miltersid_socket="local:/var/spool/postfix/private/sid-filter"

 

  1. 最後在 Postfix main.cf 加入設定

# vi /etc/postfix/main.cf

# 設定Postfix核對SPF記錄

smtpd_milters=unix:private/sid-filter

 

  1. 接下來可以直接重開機,或是直接啟動milter-sid,啟動之後檢查一下id-milter有沒有起來,有看到東西就OK

# /usr/local/etc/rc.d/milter-sid start

# ps ax | grep 'sid-filter'

45122 ?? Is   0:00.01 /usr/local/libexec/sid-filter -r 1 -u postfix -l -p local:/var/spool/postfix/private/sid-filter -P /var/run/sid-filter.pid

出現以上訊息表示設定成功

 

  1. 測試用Gmail寄封信到這台有檢查SPFMail Server,寄送後利用觀看郵件原始碼來查看Mail Header有什麼改變

Received-SPF: pass (google.com: domain of cedric@9song.com.tw designates 10.182.44.10 as permitted sender) client-ip=10.182.44.10;

Authentication-Results: mr.google.com; spf=pass (google.com: domain of cedric@9song.com.tw designates 10.182.44.10 as permitted sender) smtp.mail=cedric@9song.com.tw

Received: from mr.google.com ([10.182.44.10])

已經開始有出現檢查SPF的動作了,從Gmail寄來且它本身有加入SPF Record,因此顯示的結果就是pass

 

若是有假造的E-mail,則Header可能會出現以下狀況,假設有個 kgnxcnqslnh@sidea.uos.ac.kr 假造 ujxerafxghayzjir@ms12.hinet.net寄了信,結果就會如下所示

Authentication-Results: mail.server.domain from=ujxerafxghayzjir@ms12.hinet.net; sender-id=neutral; spf=fail (DomainDoesNotExist)

 

也可能還有這些情況,信就直接被禁止了

Authentication-Results: mail.server.domain from=itggpkqadmok@pagina.nl; sender-id=neutral; spf=fail (NotPermitted)

 

21.利用MX tools來測試自己的郵件伺服器

  1. 登入網站:http://www.checkor.com/
  2. 輸入自己的Mail Server位置,若有出現紅字的話,則表示Mail Server含有漏洞,請重頭再檢查一次自己的設定
arrow
arrow
    全站熱搜

    ced425 發表在 痞客邦 留言(2) 人氣()