Fedora10-postfix mail 系統筆記

Fedora10-postfix mail 系統筆記

postfix 設定

postfix 版本: postfix-2.5.6-2.fc11.i386

1. 設定檔位置 /etc/postfix/main.cf

    設定 postfix 可接收外部連線

    修改 /etc/postfix/main.cf 

      inet_interfaces = all    這一行#號拿掉

     將  inet_interfaces = localhost 這行前面加上 #號註解

     設定 domain name 

      mydomain =  mail2.pmail.idv.tw

     設定 hostname

     myhostname = mail2.pmail.idv.tw

   設定完成重新啟動postfix 服務 –> 指令 service postfix restart
 

測試連線

[root@mail2 postfix]# telnet 192.168.3.14 25
Trying 192.168.3.14…
Connected to 192.168.3.14.
Escape character is ‘^]’.
220 mail2.pmail.idv.tw ESMTP Postfix
 

[root@mail2 postfix]# telnet mail2.pmail.idv.tw 25
Trying 59.120.154.239…
Connected to mail2.pmail.idv.tw.
Escape character is ‘^]’.
220 mail2.pmail.idv.tw ESMTP Postfix

 

2.設定postfix SMTP 驗證

安裝 cyrus-sasl-md5  cyrus-sasl-plain  cyrus-sasl 套件

利用 yum install  cyrus-sasl-md5  cyrus-sasl-plain  cyrus-sasl

版本 :

  • cyrus-sasl-md5-2.1.22-20.fc11.i386
  • cyrus-sasl-plain-2.1.22-20.fc11.i386
  • cyrus-sasl-2.1.22-20.fc11.i386

修改 /etc/postfix/main.cf 加入下面設定

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination

設定啟動 saslauthd 服務,並設定開機自動啟動

指令

  •  chkconfig saslauthd on
  •  service saslauthd restart

利用telnet 測式smtp認證功能是否生效(要有出現 LOGIN PLAIN才算)

[root@mail2 postfix]# telnet 192.168.3.14 25
Trying 192.168.3.14…
Connected to 192.168.3.14.
Escape character is ‘^]’.
220 mail2.pmail.idv.tw ESMTP Postfix
ehlo localhost
250-mail2.pmail.idv.tw
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN

250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

安裝MailScanner

官方網站 : http://www.mailscanner.info/

安裝版本 :  MailScanner-4.74.16-1.rpm.tar.gz

1.安裝前準備: 需要有gcc ,rpm-build ,perl-MIME-tools 套件

   利用yum 安裝

   指令:  yum install gcc rpm-build perl-MIME-tools 

2. 解壓縮  tar zxvf  MailScanner-4.74.16-1.rpm.tar.gz

3.  切換到  MailScanner-4.74.16-1 目錄 

4.  ./install.sh ( 開始安裝MailScanner ,需要一點時間)

安裝好 MailScanner 後 使用 sendmail 就不需特別設定

設定開機自動啟動MailScanner  —>  指令 chkconfig MailScanner on ( 記得要把 postfix 設定開機不啟動)

5.MailScanner和postfix搭配使用時所需的設定:

  修改 /etc/postfix/main.cf 裡面 這一行—-> header_checks = regexp:/etc/postfix/header_checks 將#註解拿掉

  修改 /etc/postfix/ header_checks 加上這一行 ——–> /^Received:/ HOLD (這是為了讓Postfix收進來的mail 先儲

  存在某一個Directory裡面,等待MailScanner 來進行Scan )

修改 /etc/MailScanner/MailScanner.conf 如下:

Run As User = postfix —–>設定執行postfix 的使用者名稱

Run As Group = postdrop —–>設定執行postfix 的群組名稱

Incoming Queue Dir = /var/spool/postfix/hold —->內送郵件的佇列目錄,設定為postfix目前的佇列目錄下的hold目錄

Outgoing Queue Dir = /var/spool/postfix/incoming —>外送郵件的佇列目錄,設定為postfix目前的佇列目錄下的incoming目錄

MTA = postfix —->設定mailscanner 和 postfix 搭配使用

ps:可利用下面這一串指令查詢

postconf|grep -E ‘mail_owner|setgid_group|queue_directory’ —> 執行這一段指令

mail_owner = postfix —>這是執行postfix 的使用者名稱

queue_directory = /var/spool/postfix —>這是postfix的佇列目錄

setgid_group = postdrop —>這是執行postfix 的群組名稱

修改權限:

chown postfix.postdrop /var/spool/MailScanner/incoming
chown postfix.postdrop /var/spool/MailScanner/quarantine

 

安裝mail掃毒軟體 clamav

利用 yum install clamav 安裝即可

設定MailScanner 使用的掃描軟體 修改 /etc/MailScanner/MailScanner.conf

Virus Scanners = auto  改為 Virus Scanner = clamav

 

安裝mail過濾廣告信軟體 spamassassin

利用 yum install spamassassin 安裝即可

設定MailScanner 使用的掃描軟體 修改 /etc/MailScanner/MailScanner.conf

Use SpamAssassin = yes (預設是YES 若不搭配spamassassin 使用 改為no)

Required SpamAssassin Score = 6—>超過6等級就視為廣告信,當然可以依照使用者自已設定啦

High SpamAssassin Score = 10—>超過10分列為高等級廣告信

SpamAssassin Auto Whitelist = yes–> 可以測量從不同位址發出的廣告信及非廣告信的比率如果寄信位的信件大多不為廣告信,系統會自動的增加位址至它本身擁有的非廣告信清單(whitelist)

SpamAssassin Timeout = 75—>處理的郵件的最大等待時間(秒)

Spam Score Character = * —>設定分數用*號表示,預設是用s,要如何表示當然由自已設定囉

修改主旨設定(如果被判定為spam時會在信件主旨加上特註記)

Spam Modify Subject = start   ( no就是不修改主旨)
Spam Subject Text = {Spam?} —> 可以自行修改想要的註記

High Scoring Spam Modify Subject = start
High Scoring Spam Subject Text = {Spam?}

 

修改主旨設定(如果被判定為病毒信時會在信件主旨加上特註記)

Virus Modify Subject = start   ( no就是不修改主旨)
Virus Subject Text = {Virus?}

設定spamassass 狀態目錄

#SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin (將#取消)
#SpamAssassin User State Dir = (加上#)

建立目錄

mkdir /var/spool/MailScanner/spamassassin

修改此目錄權限

chown postfix.postdrop spamassassin

 

MailScanner中的白名單設定方法:

設定檔:/etc/MailScanner/rules/spam.whitelist.rules 針對你希望不被標示的範圍進行加註:

要使用白名單功能時請確定下面功能是否有開啟

Is Definitely Not Spam = %rules-dir%/spam.whitelist.rules

常用語法:

對象:

From: 針對信件的寄件者進行比對
To: 針對信件的收件者進行比對
FromOrTo: 針對寄件者或收件者進行比對
FromAndTo: 針對寄件者及收件者共同進行比對

 

 

比對的樣本

user@sub.domain.com 單一的郵件位址
user@* 單一帳號(不限定領域)
*@*.domain.com domain.com下轄 subdomin下的任何帳號
*@donain.com 特定 domain.com 的任何帳號
192.168. SMTP client IP 範圍 192.168.0.0/16
/^192.168.1[4567]./ SMTP client IP 範圍 192.168.14~17

 

 

範例

希望今天所有來自 *@*.mlc.edu.tw 及 *@mlc.edu.tw 的信件都不被標示為spam

值為yes表示不會被標記為spam

From:

*@*.mlc.edu.tw

yes

From:

*@mlc.edu.tw

yes

 

安裝  OpenWebmail

官方網站 http://www.openwebmail.org

版本是openwebmail 2.53

在官網上下載有關於openwebmail的套件如下

openwebmail-2.53-1.i386.rpm
openwebmail-2.53-2.i386.rpm
openwebmail-2.53-3.i386.rpm

openwebmail-data-2.53-1.i386.rpm
openwebmail-data-2.53-2.i386.rpm
openwebmail-data-2.53-3.i386.rpm

所需套件  perl  perl-Compress-Zlib   perl-suidperl  perl-Text-Iconv

可以利用  yum  perl perl-Compress-Zlib perl-suidperl perl-Text-Iconv 安裝

安裝openwebmail

rpm -ivh –force –nodeps openwebmail-*

rpm -ivh –force –nodeps openwebmail-data-*

設定 openwebmail

修改  /var/www/cgi-bin/openwebmail/etc/dbm.conf

dbm_ext .db
dbmopen_ext .db
dbmopen_haslock yes

修改 /var/www/cgi-bin/openwebmail/etc/openwebmail.conf

domainnames  pmail.idv.tw ( 修改為自己的domain name)
default_iconset  Cool3D.Chinese.Traditional (讓openwebmail 介面ICOM 變成中文的)

修改 /var/www/cgi-bin/openwebmail/etc/defaults/openwebmail.conf

smtpserver 192.168.1.5 (修該為子己的smtp IP位址)

初始化openwebmail

下達只令 /var/www/cgi-bin/openwebmail/openwebmail-tool.pl –init

最後會問你要不要傳 report

Send the site report?(Y/n) y 選y即可
 

啟動 Apache server –>  service httpd start

openwebmail 連線位址  http://yourdomain or  ip /cgi-bin/openwebmail/openwebmail.pl

簡化登openwebmail 登入網址的長度

在openwebmail 2.53 若是以rpm安裝方式就不須手動在 /etc/httpd/conf/httpd.conf 加入

ScriptAlias /webmail /var/www/cgi-bin/openwebmail/openwebmail.pl

因rpm安裝時就會自動再 /etc/httpd/conf.d 目錄下面產生 openwebmail.conf 裡面就已包含簡化的設定
 

重新啟動Apache 服務 service httpd restart

設定 Aapche 開機自動啟動 chkconfig httpd on

連線位址就變成  http://yourdomain or  ip /webmail

 

安裝Mailwatch 管理程式

官方網站:http://mailwatch.sourceforge.net/

 版本: mailwatch-1.0.4.tar.gz

 所需套件 :  mysql php 

 利用 yum -y install php mysql mysql-server php-mysql php-gd php-mbstring 指令安裝相關套件

 設定 mysql root 密碼 :  mysqladmin -u root password ‘密碼’

 設定 mysql 服務開機自動啟動 chkconfig mysqld on

 啟動 mysqld 服務 : service mysqld start

 步驟 : (這是參考官方網站及我自己想出來的安裝方式僅供參考)

1. 建立一個 user 帳號 mailwatch 及設定密碼

2. 至官方網站下載mailwatch-1.0.4.tar.gz

3.  解壓縮

   tar zxvf  mailwatch-1.0.4.tar.gz

   cd mailwatch-1.0.4

4.建立mailwatch 資料庫

  mysql -u root -p < create.sql

ps:

下達匯入資料庫指令時出現下面錯誤訊息

[root@mail2 mailwatch-1.0.4]# mysql -u root -p < create.sql
Enter password:
ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘——————————————————-

CREATE DATABASE /*’ at line 1
 

解決方法 :

編輯 vi create.sql 將 ——————————————————— 此行刪除即可匯入資料庫

5.  設使用者mailwatch擁有這個資料庫的權限,指令如下

     mysql -u root -p ( 會進入mysql 命令列模式)

    mysql>grant all on mailscanner.* to mailwatch@localhost identified by ‘密碼"; ( 此密碼是該mailwatch密碼最後有分號)

    mysql> exit

6. 修改MailWatch.pm中$db_user 為mailwatch,$db_passwd為mailwatch 帳號的密碼 ( MailWatch.pm檔案位於之前解壓出來的目錄mailwatch-1.0.4)

     將該檔案移動至 /usr/lib/MailScanner/MailScanner/CustomFunctions

     指令 : mv MailWatch.pm /usr/lib/MailScanner/MailScanner/CustomFunctions

7.  新增網頁登入的名稱,資料庫登入使用(6)的名稱及密碼,但下面則新增別的user-password,為登入驗證,

     你可以新增多個,使用下面 insert into的sql指令

mysql mailscanner -u mailwatch -p ( mailscanner 就是mailwatch資料庫名稱,mailwatch 就是前面步驟可以管理此資料庫的帳號)

Enter password: ******           

mysql> insert into users values(‘<名稱>’,md5(‘<密碼>’),’<name>’,'A’,’0′,’0′,’0′,’0′,’0′);

mysql> exit

說明 : 如要讓登入 mailwatch  網頁介面 的帳號密碼都是admin / admin 就設定入下

            insert into users values(‘admin’,md5(‘admin’),’admin’,'A’,’0′,’0′,’0′,’0′,’0′);

8. 將MailWatch的mailscanner移至網頁伺服器的目錄(/var/www/html)

   cd /mailwatch-1.0.4

   mv mailscanner /var/www/html

9.  檢查權限/var/www/html/mailscanner/images

     cd /var/www/html/mailscanner

     chown root.apache images

     chmod ug+rwx images

10. 建立conf.php

     cd  /var/www/html/mailscanner

     cp conf.php.example conf.php

    修改 下面的密碼,不然會無法網頁登入(就是mysql root 密碼)

    vi config.php

    define(DB_PASS, ‘密碼’);

11. 修改 MailScanner  設定

    cd /etc/MailScanner

     vi  MailScanner.conf

     #下面的參數

    Always Looked UP Last = &MailWatchLogging

    Detailed Spam Report = yes

    Quarantine Whole Message = yes

    Quarantine Whole Message As Queue files =no

    Include Scores In SpamAssassin Report = yes

    Quarantine User= root

    Quarantine Group=apache

    Quarantine Permissions=0660

12. 修改spam.assassin.prefs.conf (如果你有安裝spamassassin)

       vi /etc/MailScanner/ spam.assassin.prefs.conf
#加入兩行

      bayes_path /etc/MailScanner/bayes/bayes

      bayes_file_mode 0660

      #建立新的目錄bayes及權限設定

      mkdir /etc/MailScanner/bayes

      chown root:apache /etc/MailScanner/bayes

      chmod g+rws /etc/MailScanner/bayes

     #如果已經存在bayes資料庫,複製過來

     cp /root/.spamassassin/bayes_* /etc/MailScanner/bayes

     chown root:apache /etc/MailScanner/bayes/bayes_*

     chmod g+rw /etc/MailScanner/bayes/bayes_*

    #測試spamassassin

    spamassassin -D -p /etc/MailScanner/spam.assassin.prefs.conf –lint

   #你將會看到一些訊息
 

    重新啟動MailScanner

    service MailScanner restart

    除錯tail -f /var/log/maillog , 查看是否正常

    開啟你的瀏覽器http://<hostname>/mailscanner

    會磞出一個對話框,輸入在步驟7中所建立的使用者名稱及密碼

 

安裝dovecot pop3 服務

利用 yum install dovecot 安裝

設定啟動 dovecot 服務,並設定開機自動啟動

  • chkconfig dovecot on
  • service dovecot start

 

安裝 Postgrey  軟體抵擋廣告信

官方網址:  http://postgrey.schweikert.ch/

參考網站 :

http://www.postfix.org/SMTPD_POLICY_README.html

http://linux.vbird.org/

http://i-yow.blogspot.com/2008/09/part-postgrey-postgrey-centos-5.html

在Fedora 安裝方式 : yum install postgrey

版本 : postgrey-1.31-1.fc10.noarch.rpm
 

所需相關套件如下

perl-IO-Multiplex-1.10-1.fc10.noarch.rpm

perl-Net-Server-0.97-5.fc10.noarch.rpm

perl-BerkeleyDB-0.34-1.fc10.i386.rpm

compat-db46-4.6.21-5.fc10.i386.rpm  ( 參考官方網站是不須此套件,  但利用yum 安裝 postgrey  時會自動安裝)

設定 postgrey

方法 1. 修改 /etc/postfix/main.cf 加入下面藍色部份設定(其他的在上面步驟已經設定)

smtpd_recipient_restrictions =

permit_mynetworks

permit_sasl_authenticated

reject_unauth_destination

check_policy_service unix:/var/spool/postfix/postgrey/socket
 

方法 2. 

  • 修改地點1 /etc/init.d/postgrey

          將 OPTIONS="–UNIX=$SOCKET"

          改為  OPTIONS="–inet=60000 –user=postfix –group=postdrop –delay=60″

  • 修改地點2   /etc/postfix/main.cf  加入下面藍色部份設定(其他的在上面步驟已經設定)

           smtpd_recipient_restrictions =

           permit_mynetworks

           permit_sasl_authenticated

           reject_unauth_destination

          check_policy_service inet:127.0.0.1:60000

  • 修改地點3 變更postgrey權限chown postfix.postdrop /var/spool/postfix/postgrey -R 

設定啟動 postgrey 服務,並設定開機自動啟動

  • chkconfig postgrey on
  • service postgrey start
     

服務啟動後在/var/log/maillog 會看到下面訊息

Jan 29 05:26:14 mail2 postgrey: Process Backgrounded
Jan 29 05:26:14 mail2 postgrey: 2009/01/29-05:26:14 postgrey (type Net::Server::Multiplex) starting! pid(8304)
Jan 29 05:26:14 mail2 postgrey: Binding to TCP port 60000 on host 127.0.0.1#012
Jan 29 05:26:14 mail2 postgrey: Setting gid to "90 90″
Jan 29 05:26:14 mail2 postgrey: Setting uid to "89″

如果是使用方法2設定可利用 netstat -a | grep 60000 查看服務如下

[root@mail2 postfix]# netstat -a | grep 60000
tcp 0 0 localhost.localdomain:60000 *:* LISTEN

postgrey白名單設定

如果想要某些主機不透過postgrey抵擋機制可以將該主機加入/etc/postfix/postgrey_whitelist_clients 此檔中

例如 : 要把msa.hinet.net 及 mail.abc.com 排除抵擋機制

msa.hinet.net

mail.abc.com

PS: 一台主機一行

 

測試用外部信箱寄一封信會先看到 /var/log/maillog 訊息(紅色字體),下面訊息是整個過程先被退信然後過不就後又寄進來的完整log

Jan 29 04:47:24 mail2 postfix/smtpd[7587]: connect from bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]
Jan 29 04:47:25 mail2 postgrey: action=greylist, reason=new, client_name=bay0-omc1-s24.bay0.hotmail.com, client_address=65.54.246.96, sender=web711@hotmail.com, recipient=roylee@mail2.pmail.idv.tw
Jan 29 04:47:25 mail2 postfix/smtpd[7587]: NOQUEUE: reject: RCPT from bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]: 450 4.2.0 <roylee@mail2.pmail.idv.tw>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/mail2.pmail.idv.tw.html; from=<web711@hotmail.com> to=<roylee@mail2.pmail.idv.tw> proto=ESMTP helo=<bay0-omc1-s24.bay0.hotmail.com>
Jan 29 04:47:25 mail2 postfix/smtpd[7587]: disconnect from bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]

Jan 29 04:48:26 mail2 postfix/smtpd[7622]: connect from bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]
Jan 29 04:48:27 mail2 postgrey: action=pass, reason=triplet found, delay=62, client_name=bay0-omc1-s24.bay0.hotmail.com, client_address=65.54.246.96, sender=web711@hotmail.com, recipient=roylee@mail2.pmail.idv.tw
Jan 29 04:48:27 mail2 postfix/smtpd[7622]: 248153A2090: client=bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]
Jan 29 04:48:27 mail2 postfix/cleanup[7611]: 248153A2090: hold: header Received: from bay0-omc1-s24.bay0.hotmail.com (bay0-omc1-s24.bay0.hotmail.com [65.54.246.96])??by mail2.pmail.idv.tw (Postfix) with ESMTP id 248153A2090??for <roylee@mail2.pmail.idv.tw>; Thu, 29 Jan 2 from bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]; from=<web711@hotmail.com> to=<roylee@mail2.pmail.idv.tw> proto=ESMTP helo=<bay0-omc1-s24.bay0.hotmail.com>
Jan 29 04:48:27 mail2 postfix/cleanup[7611]: 248153A2090: message-id=<BAY122-W1CA7C24BC14B218E3C49188C80@phx.gbl>
Jan 29 04:48:27 mail2 postfix/smtpd[7622]: disconnect from bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]



本篇瀏覽人數: 524
本篇發表於 Fedora OS篇。將永久鏈結加入書籤。

發表迴響

您的電子郵件位址並不會被公開。 必要欄位標記為 *

*

您可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>