bin/mail會預設使用本地sendmail發送郵件,這樣要求本地的機器必須安裝和啟動Sendmail服務,配置非常麻煩,而且會帶來不必要的
資源佔用。而通過修改設定檔可以使用外部SMTP伺服器,可以達到不使用sendmail而用外部的smtp伺服器發送郵件的目的:
修改/etc/nail.rc (/etc/mail.rc)
set from=fromUser@domain.com smtp=smtp.domain.comset smtp-auth-user=username smtp-auth-password=passwordset smtp-auth=login 說明:
from是發送的郵件地址
smtp是發生的外部smtp伺服器的地址
smtp-auth-user是外部smtp伺服器認證的使用者名稱
smtp-auth-password是外部smtp伺服器認證的使用者密碼
smtp-auth是郵件認證的方式
配置成功後,就可以使用了
可以發送一封郵件測試一下:
mail -s "test" user@sohu.com <content.txt 其中-s後面的是郵件標題,user@sohu.com是收件者地址,content.txt裡面是郵件內文 以上內容轉自: http://www.diybl.com/course/6_system/linux/Linuxjs/20091119/182839.html 我試了一把,2006年之前註冊的163郵箱可以的,tom郵箱都是可以的 postfix postfix是Wietse Venema在IBM的GPL協議之下開發的MTA(郵件傳輸代理程式)軟體,想成為sendmail替代產品,它試圖成為更快、更容易管理、更安全的MTA, 安裝: rpm -ivh /mnt/cdrom/Server/postfix-2.3.3-2.i386.rpm postfix主程式 rpm -ivh /mnt/cdrom/Server/postfix-pflogsumm-2.3.3-2.i386.rpm postfix日誌工具 rpm -ivh /mnt/cdrom/Server/dovecot-1.0-1.2.rc15.el5.i386.rpm POP程式 首先查看是否安裝過postfix服務,用rpm –qa |grep postfix , 我這裡是裝過的,在這裡先用rpm –e postfix刪除postfix,然後再安裝 同樣,需查看是否有安裝過POP,這個服務用的是dovecot伺服器,這裡我也裝過,刪除後重新安裝即可 安裝後是不是就可以直接運行了呢? 顯然是不行的,它的一些必要的參數沒有生效是不能啟動並執行,下面修改幾個常用的選項: Hostname 郵件主機的FQDN Mydomain 地機郵件主機所在的域 Myorigin 本地郵件發送時的網域名稱 Mydestinatin 本地郵件接收是網域名稱 Inet_interface 郵件主機監聽的連接埠號碼 Mynetworks 本地郵件伺服器信賴的網路 Relay_domain 本地郵件伺服器傳遞的域 Smtpd_banner 登入時顯示的標題,最好是把具體的版本號碼給隱藏起來(增加安全性) 這樣就完成了一個最基本的smtp的伺服器了,當然還要做很多事情,如限制收、發郵人,別名,虛擬域等等,下面重啟看看效果如何 當然不要忘記了修改我們的POP服務設定,直接修改/etc/dovecot.conf ,把#protocols = imap imaps pop3 pop3s前面的#去掉即可,重啟看看: 然後用我們最熟悉的Outlook登入, 奇怪了?不會是postfix設定錯了吧?先看看日誌: Tail –f /var/log/maillog 出現這個錯就是dovecot的配置問題了?明明以前直接修改dovecot支援的郵件接收方法就行了,這次為什麼不行呢?試試telnet wudionline.com 25和telnet wudionline.com 110 看看 也都沒問題啊,想想前兩天裝的時候這樣配置明明是可以在outlook登入的啊,但前兩天是這種情況: 可以用outlook登入,但outlook接收不到郵件,可以發郵件,收郵件可以在/var/spool/mail裡看到,就是接收不到本地 outlook來,經網上參考,最好把#mail_location = mbox:~/mail:INBOX=/var/mail/%u前的#去掉,就可以在本地收郵件了,經分析那裡因為dovecot設定的郵件接收路徑不 對,所以改一點就OK了,但這次是登入不上去啊,網上找了半天也沒有答案,於是試試把 #mail_location = mbox:~/mail:INBOX=/var/mail/%u,前的#去掉, 重啟看看 真的登入成功了。試了一下收、發郵件都沒有問題了。 平時由於root帳號預設接收系統各種錯誤記錄檔,但是用root登入個人覺得不太方便,於是想用一個普通使用者也接收發給root的郵件,看了一下配置協助文檔,按這樣的格式就可以用別名的方式接收其它使用者的郵件: root: wuzh 當然得寫入/etc/aliases檔案裡,這樣當系統出錯錯誤或其它的事件記錄的時候,就會把日誌附加一份發給wuzh這個普通使用者了這個就不截圖了:),改了過後直接發一封郵件給root,然後在wuzh這個帳號裡就可以看到郵件原文了 還有一個功能:虛擬域利用一個虛擬網域名稱來代表實際域來收發郵件(以我這樣的低水平來說,我感覺我用不上,它只能用於內部交流,如果與外界收發郵 件的時候虛擬域就無法在廣域網路上實行解析,也就是根本就接收不到郵件,)如圖:我把我的網域名稱wudionline.com改成 wudionline.net發信給我的另一個郵箱 發送人地址是變了,可是要回複那就難了…….看 他的好處就是隱藏自己的網域名稱,好讓別人找不到他(如果擔心別人找他的話….),當然還有其它的好處的,我的水平菜還不知道怎麼用.等學會了再來更新…… 這裡還是示範一下如何設定吧: 在main.cf裡加入virtual_maps = hash:/etc/postfix/virtual, 這個是虛擬域的位置,還要往這個檔案裡加入內容,格式為: Wudionline.net anything wuzh@wudionline.net wuzh 之後,用postmap命令產生虛擬域資料庫: postmap /etc/postfix/virtual 前面是虛擬使用者,後面是系統使用者,其實收郵件還是系統使用者收發的,只是允許虛擬使用者對其操作而已 postfix部分轉自:http://www.webjx.com/server/linux-14673.html 自動發送郵件的指令碼 記得在學校的時候,有一次和老師討論問題,有一些不明白的地方,他說,你可以編個程式驗證一下。我差點沒有暈過去。因為那時的我非常害怕編程。不過還好,有很多事情我們不需要編程就可以實現。 比如最近,我開始厭煩在桌子上面的兩條電腦之間轉來轉去,於是我打算寫一小段shell指令碼,當linux/unix下面的工作完成的時候,系統自動發送一個郵件到windwos下面通知我。 在Linux和Unix下面發送郵件非常方便,如果只是要發送一個訊息,那麼需要的命令就更簡單了,只不過不同的系統郵件伺服器命令稍有不同。對於我,經常工作的電腦是HP的C8000工作站,它的系統是HP-UX,還有一台也是HP,安裝的是redhat AS系統。 HP-UX的郵件程式需要在terminal下面輸入:mail命令,然後進去寫信,而redhat的郵件發送程式就比較方便,只要一條命令就可以指定主題、附件、內容: echo "Content:The work is done" | mail -s "This is subject" mwang@veryword.com 下面這一段指令碼就是通過某一個檔案是否已經產生進行判斷,如果產生了就發送通知訊息到指定郵箱。否則就每30秒鐘檢查一次,有完成的就發送通知訊息,有沒有完成的就休眠後繼續迴圈,一直到全部完成再退出。 #!/bin/csh set arrayA = ($*) set i=1 set SysInfo = `uname` set arrayB = () while ( $i <= $#arrayA ) if ( -f ${arrayA[$i]}/result_data.txt) then if ($SysInfo == HP-UX ) then mail mwang@veryword.com << ! Subject:'${arrayA[$i]} is finished' '${arrayA[$i]} is finished' . ! else echo "${arrayA[$i]} is finished" | mail -s "${arrayA[$i]} is finished" mwang@veryword.com endif echo "${arrayA[$i]} is finished, a mail is sent to mwang" else set arrayB = ( $arrayB $arrayA[$i] ) endif
if ( ( $i >= $#arrayA ) && $#arrayB) then set arrayA = ($arrayB) echo "$arrayA is under calculation, please wait. Now: " `date` set arrayB = () set i = 0 sleep 30 endif @ i++
end 轉自 http://www.veryword.com/2008/11/10/auto-send-mail-script.html |