2011年5月19日 星期四

Linux 雜記二

Router設定
語法: route  add  wanderer  gw  vlager  mtu  296
route  add [-net|-host] target [netmask Nm][gw Gw][metric N]

        ex: # /sbin/route add default gw 140.113.190.254 netmask 0.0.0.0 metric 1
       指定default gateway140.113.190.254

       # /sbin/route add –net 140.113.190.0 netmask 255.255.255.0 dev eth0
       將網路卡裝置eth0加入route table, 並指定網域是140.113.190.0

如果從routing table 中發現沒有router, 而造成無法對外連線, 可以使用route指令增加一台router (Gateway), RedHat Linux使用者可以直接執行 /etc/rc.d/init.d/routed啟動router. 如要在每一次開啟這台Linux伺服器使用內定通訊閘的話, 只要修改 /etc/sysconfig/network, 將含有通訊閘定義的那行更改成GATEWAY=”140.113.190.254” 即可.

arp指令: 檢視網路硬體, 以及網路卡的MAC位址
                ether: Ethernet
             tr: 16/4 Mbps TR
                ax25: AMPR AX.25
                netrom: AMPR NET/ROM
                arcnet: ARCnet
                dlci: Frame Relay DLCI

tcpdump指令: 查看網路流通量

netstat監視網路Routing Table
        -r 偵查網路狀態, 以下為各flags意義:
                G: Gateway
                U: 這個網路介面, 目前是啟動狀態.
                H: Single host使用的router, 通常是 127.0.0.1
                D: routing table ICMP redirect message產生
                M: routing table ICMP redi rect message所修改.
        -i 顯示網路流量統計
                RX-OK/TX-OK 對內/對外網路接收流量
                        若此兩值異常增高, 就表示有人在進行大量的網路傳輸工作.
                RX-ERR/TX-ERR 接收/傳送失敗的封包次數.
若次數太多, 表示網路一定有問題.
                RX-DRP/TX-DRP 代表多少個接收/傳送封包被丟棄.
                RX-OVR/TX-OVR 代表多少個接收/傳送的封包沒有確實接收.
                        若此種封包太多, 表示網路過於忙碌, 來不及接收與傳送所有的封包, 應正視網路流量壅塞的問題.
        -ta 檢視網路Service狀態
                LISTEN 表示主動提供服務.
                ESTABLISHED 表示已經處理完畢獲得servicesocket.
        -u 顯示UDP socket
        -w 顯示RAW socket.
        -x 顯示UNIX socket.

traceroute 顯示路由(routing)路徑

SendMail郵件伺服器

Sendmail的設定檔: /etc/sendmail.cf  or  /etc/mail/sendmail.cf
Sendmail 主機名稱檔案: /etc/sendmail.cw  or  /etc/mail/local-host-names

/usr/sbin/sendmail
基本參數: -b  指定sendmailDaemon形式啟動.
                 -d  指定sendmail在背景執行, LISTEN port 25, 等待信件.
                 -q  指定多久將mail queue的信件送出
            ex: -q3h 三小時送一次.
               -q30s 30秒送一次.
               -q2d 兩天送一次.
                           -q1w 一周送一次.
               -q30m 30分鐘送一次.
             可執行mailq指令, or /var/spool/mqueue, 查看目前系統有無信件傳送不出去.




.讓含大寫字母的UserID正常收信
編輯 /etc/mail/sendmail.cf , 並搜尋Mlocal字串.

Mlocal,            P=/usr/bin/procmail,F=lsDFMAw5:|@qSPfhn9,
                加入一個小寫字母”u”F=ls…@…n9,的最後
                (qSPfhn9,這一串字母中沒有h字母, 也要加入h)

結果: Mlocal,          P=/usr/bin/procmail,F=lsDFMAw5:|@qSPfhn9u,

改完後, 重新啟動….(如下)
# ps –auxw | grep sendmail
# kill –9
# /usr/sbin/sendmail –bd –q30m
       



       
        .設定拒收大型郵件 
編輯 /etc/mail/sendmail.cf, MlocalMprog區段中分別加入Maxsize = (Bytes)
Mlocal,            P=/usr/bin/procmail,F=lsDFMAw5:|@qSPfhn9,
                                        Maxsize=3000000
                                        T=DNS/RFC822/X-Unix,
                                        A=procmail –Y –a $h –d $u

Mprog,            P=/bin/sh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL,
                                        Maxsize=3000000
                                        T=X-Unix/X-Unix/X-Unix,
                                        A=sh –c $u




        .Mail alias 與轉寄功能
利用Mail alias功能, 替自己取個名字, 這樣別人利用alias name寄送的信件, 照樣可以轉到您實際的信箱當中.

編輯 sendmail.cf, aliases為關鍵字搜尋字串, 代表alias檔案應該是在 /etc/mail/aliases
ex:
        aliasname:        name1, name2, name3
        nobody:           root
        system:            root, adm, superuser
        toor:                 root
        uucp:               root
        Wen-Ze-Yang: wzyang
說明: 以上會將nobody, system, toor, uucp的寄信, 實際上都會轉送給root帳號, alias name也可以是大寫形式, 例如: Wen-Ze-Yang: wzyang以全名表示, 這樣Wen-Ze-Yang@somewhere 這樣的電子郵件, 依然會送到 wzyang 手裡. 另外, 您也可以將一個aliasname同時設定到好幾個帳號身上. 在您設定好 aliases 檔案後, 請執行 newaliases 更新 alias name database (/etc/mail/aliases.db), 如此就可使用alias name寄信了.
-------------------------------------------------------------------------------------------------------------------------------



        .郵件轉寄功能
想與其他人分享其mail, 可以設定自動轉寄功能, 只要將 E-mail Address, 加入 $HOME/.forward即可.
       假設主機名稱: linux.ee.nctu.edu.tw
        Linux主機上的帳號: wzyang
        建立一個 .forward檔案內容如下:
                aaa@cc.nctu.edu.tw
                bbb@ms1.hinet.net
                ccc@ee.nctu.edu.tw
                \wzyang
**: 最後的 \wzyang 表示要留一份信件在自己的帳號上, 否則信件被轉發出去後就不見了.
-------------------------------------------------------------------------------------------------------------------------------



        .自動回信系統
假設管理自動回信的帳號是: wwwadm, 請在該帳號的Home directory下執行動作….
        $ vacation –i

初次使用 vacation功能, 必須先建立 vacation database ~/.vacation.db
        $ vi ~/.vacation.msg

編輯回信訊息檔, 這個訊息檔的內容應該像這樣
        From: eric@CS.Berkeley.EDU (Eric Allman)
        Subject: I am on vacation
        Delivered-By-The-Graces-Of: The Vacation program
        Precedence: bulk
        I am on vacation until July 22. If you have some-thing urgent.
        please contact Keith Bostic < bostic@CS.Berke-ley.EDU >


        $vi .forward

.forward檔案中, 加入此行:
                \wwwadm, “|/usr/bin/vacation wwwadm”
        前面的 \wwwadm是告訴forward不要將信件轉送出去, 且要留下來.
        後面的 /usr/bin/vacation wwwadm, 是執行vacation自動回覆訊息.

***: 每次修改 .forward檔案時, 一定要先執行 vacation –i , 重新update vacation database.

另外 vacation 還有一些選項可以使用.
-f 指定 vacation database檔案, 以取代 .vacation.db
-m 指定 vacation 訊息檔, 以取代 .vacation.msg




        . 拒收垃圾廣告信(Anti-SPAM)

要預防接受到大量的 Mail SPAM, 首先就必須從杜絕接收大量發送廣告信的網站的信件, Yahoo.comhotmail.comGeoCitiesTripod….這類免費提供電子郵件的網站, 就時常被當作SPAM的發送站, 所以網路管理者就應該考慮拒收這些address寄送過來的信件.

編輯 /etc/mail/access

# by default we allow relaying from localhost…
localhost.localdomain             RELAY
localhost                                  RELAY
yahoo.com                               REJECT
geocities.com                          REJECT
spammer@hotmail.com          REJECT
192.168.100                            REJECT

access檔案中可以指定的參數有: OKRELAYREJECTDISCARD四種.

OK 是四種設定值中, 權限最高的, 不管這個網址又被設定成什麼權限, 或者寄送過來的信件發生什麼狀況, 一概接收。但是如此太不保險, 故沒人會這樣設.

RELAY 從這個網址寄送過來的信件, 可以接收。而且充當這個網址的Mail relay

REJECT 拒收從這個網址寄過來的信件, 也是我們設定Anti-spam的方法。

DISCARD 凡是從這個網址寄送過來的信件, 不接收也不回應。直接忽略曾有這封信件寄過來。



編輯好 /etc/mail/access, 設定好拒收電子郵件的對象後, 執行下列指令更新資料庫, 並重新啟動 sendmail, 設定值才生效。
# makemap hash /etc/mail/access < /etc/mail/access


** 避免主機充當Mail relay: 如果您的Mail ServerUNIX系統者, upgrade您的sendmail8.9版以上。如果您的Mail ServerMicrosoft Exchange則請廠商更新到最新版並將防止SPAM的設定設上去。一般relay的設定是只允許貴單位內的IPSMTP server設到該Mail Server, 其他單位的IP都應拒絕。/etc/mail/relay-domains內容像這樣:
.ee.nctu.edu.tw RELAY
localhost RELAY

若您沒有設定, 或者根本沒有relay-domains這個檔案, 則自從Sendmail 8.9 版起, 都不會自動當作別人的relay。在您修改relay-domains之後, 記得重新啟動Sendmail, 這樣設定值才生效。另外您可利用http://www.edu.tw/tanet/spam.html此網址, 測試Mail server是否被利用做mail spam.

RedHat 7.0/7.1/7.2版的Sendmail default設定有點問題, /etc/sendmail.cf內的DaemonPortOptions設定只有指向lo interface, 也就是只有監聽127.0.0.1 , 導致不能透過POP3 client端主機收發信件(即使Sendmail啟動運作正常也一樣), 請依照下列方法解決:

Ans:
    請編輯 /etc/sendmail.cf , 找到下列這一行:

O daemonPortOption=Port=smtp.Addr=127.0.0.1,Name=MTA

如此的設定代表只能讓127.0.0.1MTA接收來信, 所以在前面加上#, 將它註解掉再重新啟動Sendmail即可.

然後執行 /etc/rc.d/init.d/sendmail restart 之後, POP3 client端就可以正常收發信了.








POP3/IMAP4 郵件伺服器

  讓使用者透過一般的pop3 client藉由POP3通訊協定與Mail server溝通並下載信件.
通常POP通訊協定被用來: 將伺服器端的信件傳遞到用戶端上.
    IMAP允許使用者在遠端處理伺服器上的信件.

1.      安裝POP3/IMAP4 server
rpm –ivh imap-2000c-15.i386.rpm

   安裝imap-2000c-15.i386.rpm套件後, 會在 /etc/xinetd.d/ 目錄下, 多出五個設定檔, 分別是:
       
        imap                # IMAP Server
        imaps       # IMAP over SSL
        ipop2       # POP Version 2 Server
        ipop3       # POP Version 3 Server
        pop3s       # POP Version 3 over SSL

        然而這些設定檔的內容, 都預設不啟動這些伺服器程式, 所以您必須使用編輯器將這五個設定檔內的 disable = yes移除.

2.      /etc/services 加入以下內容, 指定各個 daemon 執行的 port。其中要注意的是, imap2imap4共用一個daemon, 使用同樣的 port number, 所以只要指定imap2即可.

pop-2       109/tcp            postoffice                # POP version 2
pop-2       109/udp                                  
pop-3       110/tcp                                    # POP version 3
pop-3       110/udp                  
imap2      143/tcp            imap                        # Interim Mail Access Proto v2
imap2      143/udp           imap
imaps       993/tcp                                    # IMAP over SSL
pop3s       995/tcp                                    # POP-3 over SSL

        完成上面設定後, 執行 /etc/rc.d/init.d/xinetd restart, 重新啟動xinetd, 就可以試試從pop3 client是否可以從pop3 server下載信件了。

3.      若使用者想使用MS outlook送信時, 一定會被您的Linux Sendmail Server退信, 因為Sendmail Relay發信端電腦的信件。要解決此問題, 必須將發信端的PC子網域, 加入SendmailRelay。做法如下:

一.    編輯 /etc/mail/access : (以下為假設所在的子網域為ma1.hinet.net)
# by default we allow relaying from localhost…
localhost.localdomain             RELAY
localhost                                  RELAY
ms1.hinet.net                         RELAY           ß Domain or IP address方式加入子網域
140.113.11                               RELAY

二.    更新Sendmail access資料庫
# makemap hash /etc/mail/access < /etc/mail/access

三.    重新啟動Sendmail server
# /etc/rc.d/init.d/sendmail restart

沒有留言: