茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1672226 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
PIMG_00039.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2012/11/20 7:26:13
__用 SendMail 建立備援交換站 ( Backup MX )︰
說明︰
﹒『我們的郵件並非真的完全轉到下一個 MX 主機接收﹐而是先將郵件
暫時佇列( queue ) 在那台機器上﹐當原來的 MX 主機恢復連線之後﹐郵件會
自動的從佇列主機那邊送回來』

﹒Backup MX 以 SendMail 為基礎以 Mailscanner 搭配 clamav 和 greylist
及 ORDB 資料庫做檢查!

﹒所有的觀念及設定皆來自 Study-Area 網友所提供的,並非原創只是
加以整理及實做後重新發表。~特此說明~

__方法如下︰
在 DNS Server 上設定如下﹕
$ORIGIN my.domain.com.
@ IN MX 10 a.my.domain.com.
@ IN MX 20 b.my.domain.com.
a IN A 1.2.3.4
b IN A 1.2.3.5

接下來在 a 機器上面做如下動作﹕
echo "my.domain.com" >> /etc/mail/local-host-names
echo "a.my.domain.com" >> /etc/mail/local-host-names
service sendmail restart

再於 b 機器上面做如下動作﹕
echo "b.my.domain.com" >> /etc/mail/local-host-names
echo "my.domain.com RELAY" >> /etc/mail/access
echo "a.my.domain.com RELAY" >> /etc/mail/access
makemap hash /etc/mail/access.db < /etc/mail/access
service sendmail restart

# 注意﹕
在 b 機器上的 /etc/mail/local-host-names 檔案中不能有 my.domain.com ﹗
否則會視為 local 而不是 queue ﹐請再三確認。

__另須製作 SSH RSA Key 不用密碼可立即登入的 Server User
架設方式可參考鳥哥網站!網址如下︰
http://linux.vbird.org/linux_server/031 ... sshdconfig

~僅做重點說明︰
﹒Mail(主要) SSH Server Config 檔:
因我須保有原有 pam 認證及新的 RSA Key 免密碼登入,雙重模式!
# vi /etc/ssh/sshd_config
PermitRootLogin no
...
PasswordAuthentication yes # 改成 no,這樣子沒有私鑰就會無法登入了
...
RSAAuthentication yes # 是否使用純的 RSA 認證!?僅針對 version 1 !
PubkeyAuthentication yes # 是否允許 Public Key ?當然允許啦!僅針對 version 2
AuthorizedKeysFile .ssh/authorized_keys # 使用不需要密碼登入的帳號時,那麼那個帳號的存放檔案所在檔名!
...
#PermitEmptyPasswords no

需注意︰
_1. 產生 RSA Key 必須用 Client 端產生,本例是在 (Backup MX)
主機上用 root user 去產生 id_rsa (私鑰)及 id_rsa.pub(公鑰)
_2. 在 Mail (主要) 主機上,指定登入 user 帳號下擺入 id_rsa.pub
檔案在 [UserHome]\.ssh 目錄下產生 authorized_keys 檔案!
   cat ../id_rsa.pub >> authorized_keys
_3. 檢查 Mail (主要) 主機上,
﹒userhome 目錄下 ~./ssh 是否是 744 的權限
﹒檢查是否存在 ~/.ssh/authorized_keys
﹒並且 ~/.ssh/authorized_keys 的權限是否是 644
_4. 當 Backup MX 主機上第一次執行,請依下列步驟︰
# cd
# cd .ssh
# rm -f known_hosts
# cd ..
# ssh test@10.10.20.20 [該 ip 為 Mail (主要) 機器]
The authenticity of host '10.10.20.20 (10.10.20.20)' can't be established.
RSA key fingerprint is 07:d2:a4:93:b7:99:b2:39:2a:45:db:e1:6f:c7:d8:32.
Are you sure you want to continue connecting (yes/no)?yes

你會發現該 Key 值並非原先透過 # ssh-keygen -t rsa
所產生 Key 值一樣,不要擔心請按 yes 就完成!下次再重 run 一次就
直接登入。

重點回顧︰
Client 必須製作出 Public & Private 這兩把 keys,且 Private 需放到 ~/.ssh/ 內;
Server 必須要有 Public Key ,且放置到使用者家目錄下的 ~/.ssh/authorized_keys;

__重頭戲要上演了!雖然建立備援交換站 (Backup MX)已可正常工作,但
實際上確發生一大推已離職員工或不存在 user 被由 Mail (主要)機器
退回 mail 而 queue 住(因 mail header 已被 Backup MX 改寫),久而
久之到達 queue 上限而造成 Backup queue Mail Server 停擺!

雖然可定時擺入 crontab 以 Shell scripts 方式去 kill sendmail
queue 但並非完美方式;經參加 study-area 舉辦 1/27 日研討會,得知其他
網管其作法是將 mail 帳號產生一份清單擺在 Backup queue MX 主機上去
驗證使用者,就可以解決此問題!

~作法如下︰
﹒主要主機 postfix 是採用 PAM 機制,故寫一隻 Shell scripts !
去抓取 /etc/passwd 檔產生使用者清單,程式碼如下︰
# vi /etc/rc.d/emaills

# >>>>>>>>>> The filename "naliases" must be
# >> NOTE >> manual add eMail User aliases
# >>>>>>>>>> please add root account
#
cd /etc/rc.d
echo -e "# $(date) " > rcptlist
cat /etc/passwd |awk -F":" '$3>=500 && $3 <=60000 {printf("%s@aaa.com.tw\n",$1);}' >> rcptlist
cat /etc/postfix/naliases >> rcptlist

上述中 email 別名檔,是由手動方式去維護 naliase 檔案,必竟不多且變動不大
因只須存入不存在帳號使用者,及要收 Backup MX 主機上帳號!

# chmod 666 rcptlist ←─ 一定要變更為 rw 權限,讓由 Backup MX 主機啟動 ssh 指令
透過非 root user 去執行!

~備援交換站 ( Backup MX )︰
# vi /etc/mail/up_account
cd /etc/mail
rm -f rcptlist

ssh test@10.10.20.20 /etc/rc.d/emaills
scp -p test@10.10.20.20:/etc/rc.d/rcptlist .

if [ -f /etc/mail/rcptlist ]; then
makemap hash -er /etc/mail/rcptlist < /etc/mail/rcptlist
fi

# chmod 755 up_account

新增 crontab 排程!
由於採用 eMail 帳號清單,是否開放 relay 功能!故必須修改此檔
或者將此地帳號加入 naliases 檔案內即可。
# vi /etc/crontab
...
30 11 * * * root /etc/mail/up_account > /dev/null 2>&1
00 17 * * * root /etc/mail/up_account > /dev/null 2>&1

# /etc/rc.d/init.d/crond restart


# cat /etc/mail/rcptlist
james@abc.om
rock@abc.com

1.將下面加入sendmail.cf中.
直接手動加入 sendmail.cf
原本 sendmail.cf 中,應有一行 SLocal_check_rcpt,

修改如下即可!只需採用其中一個範例即可!
(注意中間是 Tab,幾個沒差)

2.規則為當進來的recipient email address不存在 rcptlist中,
就 reject. 規則也可以 discard.
熟 sendmail,就好應用.試試看
# vi /etc/mail/sendmail.cf

__尋找 SLocal_check_rcpt 位置(約 1251 行),將下列範例全部置換!
~例 1︰(reject)
Krcptlist hash -m -a% /etc/mail/rcptlist
SLocal_check_rcpt
R$*<$*>$*[tab]$: $2
R$*[tab]$: $(rcptlist $1 $:? $) $| $1
R?$|$*[tab]$#error $@ 5.7.1 $: "550 Relaying denied"
R$*[tab]$@ ok

~例 2︰(discard)
Krcptlist hash -m -a% /etc/mail/rcptlist
SLocal_check_rcpt
R$*<$*>$*[tab]$: $2
R$*[tab]$: $(rcptlist $1 $:? $) $| $1
R?$|$*[tab]$#discard $: discard
R$*[tab]$@ ok

附 註︰
刪除 sendmail eMail queue shell scripts 如下︰
# cat /etc/mail/killmail
su -l root -c '/etc/rc.d/init.d/MailScanner stop'
sleep 3
su -l root -c '/etc/rc.d/init.d/sendmail stop'
sleep 1
# fixed Argument list too long
cd /var/spool/mqueue
ls -C1 |xargs -i rm {}
su -l root -c '/etc/rc.d/init.d/MailScanner start'

到此完成後!就打造完美 Mail System 僅此拋磚引玉,
給有需求網友作參考!


原文出處:鳥哥的 Linux 私房菜-新手討論區 • 檢視主題 - [分享] Postfix 進階篇
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|