Linux下配置使用外部SMTP發郵件


[root@localhost /]# mail -s "Message"  [email protected] < /tmp/info.message  


系統默認以“root@主機名” 發送郵件,收到郵件直接被過慮成垃圾郵件了,那可不可以自定義郵箱發送郵件呢?


答案肯定可以的。



下載mailx包

mailx官方站點 http://heirloom.sourceforge.net/

下載最新版本mailx-12.4.tar.bz2 (271.5 kB) 

http://sourceforge.net/projects/heirloom/files/latest/download?source=files

[root@localhost software]# tar -jxvf mailx-12.4.tar.bz2  
[root@localhost software]# cd mailx-12.4
[root@localhost mailx-12.4]# make
openssl.c:108: 錯誤:expected declaration specifiers or ‘...’ before ‘STACK’
openssl.c: 在函數‘ssl_select_method’中:
openssl.c:215: 警告:賦值丟棄了指針目標類型的限定
openssl.c:217: 警告:賦值丟棄了指針目標類型的限定
openssl.c:219: 警告:賦值丟棄了指針目標類型的限定
openssl.c:223: 警告:賦值丟棄了指針目標類型的限定
openssl.c:226: 警告:賦值丟棄了指針目標類型的限定
openssl.c: 在函數‘ssl_check_host’中:
openssl.c:311: 錯誤:‘STACK’未聲明(在此函數內第一次使用)
openssl.c:311: 錯誤:(即使在一個函數內多次出現,每個未聲明的標識符在其
openssl.c:311: 錯誤:所在的函數內也只報告一次。)
openssl.c:311: 錯誤:‘gens’未聲明(在此函數內第一次使用)
openssl.c: 在文件層:
openssl.c:499: 錯誤:expected declaration specifiers or ‘...’ before ‘STACK’
openssl.c: 在函數‘smime_verify’中:
openssl.c:508: 錯誤:‘STACK’未聲明(在此函數內第一次使用)
openssl.c:508: 錯誤:‘certs’未聲明(在此函數內第一次使用)
openssl.c:508: 錯誤:‘gens’未聲明(在此函數內第一次使用)
openssl.c:555: 錯誤:‘chain’未聲明(在此函數內第一次使用)
openssl.c: 在函數‘cverify’中:
openssl.c:617: 錯誤:‘STACK’未聲明(在此函數內第一次使用)
openssl.c:617: 錯誤:‘chain’未聲明(在此函數內第一次使用)
openssl.c:649: 錯誤:提供給函數‘smime_verify’的實參太多
openssl.c: 在函數‘smime_encrypt’中:
openssl.c:690: 錯誤:‘STACK’未聲明(在此函數內第一次使用)
openssl.c:690: 錯誤:‘certs’未聲明(在此函數內第一次使用)
openssl.c: 在函數‘smime_certsave’中:
openssl.c:953: 錯誤:‘STACK’未聲明(在此函數內第一次使用)
openssl.c:953: 錯誤:‘certs’未聲明(在此函數內第一次使用)
openssl.c:955: 錯誤:‘chain’未聲明(在此函數內第一次使用)
Makefile:80: recipe for target 'openssl.o' failed
make: *** [openssl.o] Error 1


出現錯誤,看下面文檔幫助

http://www.linuxfromscratch.org/blfs/view/stable/basicnet/mailx.html

原來差補丁,修復他

[root@localhost mailx-12.4]# wget http://www.linuxfromscratch.org/patches/blfs/7.6/mailx-12.4-openssl_1.0.0_build_fix-1.patch
[root@localhost mailx-12.4]# patch -Np1 -i mailx-12.4-openssl_1.0.0_build_fix-1.patch  
patching file makeconfig 
patching file openssl.c

#修復補丁成功

 

[root@localhost mailx-12.4]# make clean   #清除歷史編譯後文件
[root@localhost mailx-12.4]# make   #再次編繹
[root@localhost mailx-12.4]# make install UCBINSTALL=/usr/bin/install
/usr/bin/install -c mailx /usr/local/bin/mailx
strip /usr/local/bin/mailx
test -d /usr/local/share/man/man1 || mkdir -p /usr/local/share/man/man1
/usr/bin/install -c -m 644 mailx.1 /usr/local/share/man/man1/mailx.1
test -d /etc || mkdir -p /etc
test -f /etc/nail.rc || \
        /usr/bin/install -c -m 644 nail.rc /etc/nail.rc
[root@localhost bin]# vim /etc/nail.rc   #編輯nail.rc配置外部SMTP信息
set [email protected] smtp=smtp.163.com
set [email protected] smtp-auth-password=xxxxx smtp-auth=login
[root@localhost mailx-12.4]# service postfix reload  #重新加載postfix,可以不用重啓的。


測試一下

[root@localhost mailx-12.4]# mail -s "Message"  [email protected] < /tmp/info.message


郵件發送成功,但爲什麼收到的還是[email protected]發送的郵件呢?  

[root@localhost mailx-12.4]# whereis mailx
mailx: /bin/mailx /usr/bin/mailx /usr/local/bin/mailx /usr/share/man/man1/mailx.1 /usr/share/man/man1/mailx.1.gz /usr/share/man/man1p/mailx.1p.gz

哦,原因是新安裝的包沒有生效,執行還是原來的路徑,替換他。

[root@localhost mailx-12.4]# cd /bin
[root@localhost bin]# rm -rf mailx                                                                                                        
[root@localhost bin]# ln -s /usr/local/bin/mailx mailx                                                                                    
[root@localhost bin]# mailx -V 
[root@localhost bin]# mail -s "Message"  [email protected] < /tmp/info.message

這下成功。


其它方法如:SendEmail 見 http://caspian.dotconf.net/menu/Software/SendEmail/


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