uuencode + uudecode + base64

基於安全理由,公司封閉了我個人的e-mail賬戶對外的收發功能,以後在公司往自己的郵箱發一些有價值的東西就麻煩一些了,如果,個人PC的外網web mail/smtp/pop3連接也斷了就更是雪上加霜了。呵呵,不過,我暫時還是有辦法應對的。

 

公司有幾臺unix服務器是隨時要監控作業運行狀況的,如果發現出了點問題就通過e-mail通知相關負責人。幸好,目前其連接狀況還是對外開放的,也就是說,在服務器上還是可以通過mailx發郵件到我自己的郵箱的。

 

不帶附件的郵件可以這樣發:cat readme | mailx -s "just a test" [email protected]

 

帶附件的郵件,需要uuencode支持:(echo "Save the attachment and run uudecode to get it"; uuencode destroy_1.0.0.tar.gz destroy_1.0.0.tar.gz) | mailx -s "destroy 1.0" [email protected]

 

uuencode可以將二進制文件轉換爲文本文件,轉換後的文件可以通過純文本e-mail進行傳輸,在接收方對該文件進行uudecode,即將其轉換爲初始的二進制文件。

 

如果郵件服務提供商僅僅將該附件看作是普通的文本文件,而不提供uudecode支持,那麼在Unix下,可以執行uudecode將其還原:uudecode -o destroy_1.0.0.tar.gz load_from_server.txt,在Windows下就更簡單了,可以把文件擴展名改爲uue,然後用Winzip解開即可。

 

而Linux下默認是沒有uuencode和uudecode的(當然也可以在網上找到源代碼自行編譯)。替代辦法是base64,不過RHEL自帶的base64在解碼時有點問題,建議使用以下鏈接的跨平臺base64編解碼程序。

 

http://download.csdn.net/source/2931432

 

利用base64從服務器發送帶附件的郵件可以這樣:base64 binary_file | mailx -s "just a test" [email protected]

 

把收到的郵件正文內容保存爲mail_body,在本地解碼:base64 -d mail_body > binary_file

 

就像uuencode那樣,base64可以把二進制文件的每3個字節轉爲4個字節的文本,轉換後的每字節的字符集只有64個字符,具體算法介紹網上很多地方都有,這裏就不展開了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章