====== Linux:Mail 用法簡介 ====== **Command Line 模式寄出** echo "This is a mail content" | mail -s "Title" -r eddie@lang.idv.tw eddy@lang.idv.tw Usage: mail -eiIUdEFntBDNHRV~ -T FILE -u USER -h hops -r address -s SUBJECT -a FILE -q FILE -f FILE -A ACCOUNT -b USERS -c USERS -S OPTION users 參數說明: * -s 設定這封信的主旨,當主旨內容留有空白字元時,需將其用引號包住。\\例 :-s "test mail" * -a 想在信件中夾帶附加檔案,用這個參數就對了。\\ 例 :-a ~/testfile * -c 指定信件的副本。\\ 例 :-c barry,vivian * -b 指定信件的密件副本 ( 將收件者的郵件地址隱藏 )。\\ 例 :-b mary,tina@msa.hinet.net * -q 以指定的檔案做為信件的起始內容。\\ 例: -q ~/mailfile * -r 設定 mail from 的郵件地址。\\ 例:-r admin@paching.idv.tw * -u 讀取使用者的 mailbox。\\ 例 :-u barry * -f 讀取使用者的 mailbox。\\ 例 :-f /var/spool/mail/barry **將某檔案的內容直接寄出**\\ 假設有一文字檔 content.txt 以下指令可以直按寄出內文 # cat content.txt ||mail -s "mail test" test@gmail.com or mail -s "This is a test" aa@aa.com < content.txt **編輯模式寄出**: [root@test root]# mail vbird@qqdomain.name Subject: This is a test mail There are writing area! You can't use the Up/Down button in this form... you can finish with "." . <==這個『.』就是結束符號!要正常離開編輯畫面就是 . ! ** 寄 HTML 格式 **\\(但不支援 JavaScript) (echo -e "Subject: HTML\nMIME-Version: 1.0\nFrom: eddie_lin@ccandc.com.tw\nTo:eddie@lang.idv.tw\nContent-Type: text/html\nContent-Disposition: inline\n\n";/bin/cat /var/www/html/uploadFile.htm) | /usr/sbin/sendmail -f eddie_lin@ccandc.com.tw eddie@lang.idv.tw ====== mail/mailx命令使用外部SMTP來發送郵件 ====== /bin/mail會默認使用本地sendmail發送郵件,這樣本地的機器必須安裝和啟動Sendmail服務,配置非常麻煩,而且會帶來不必要的資源佔用。而通過修改配置文件可以使用外部SMTP服務器,可以達到不使用sendmail而用外部的SMTP服務器發送郵件的目的: 修改/etc/mail.rc 加入底下設定: set from=fromuser@domain.com smtp=domain.com set smtp-auth-user=username smtp-auth-password=password set smtp-auth=login 說明:\\ from是發送的郵件地址\\ smtp是發生的外部smtp服務器的地址\\ smtp-auth-user是外部smtp服務器認證的用戶名\\ smtp-auth-password是外部smtp服務器認證的用戶密碼\\ smtp-auth是郵件認證的方式\\ 配置成功後,就可以使用了,可以發送一封郵件測試一下: mail -s "test" user@domain.com < content.txt 其中-s後面的是郵件標題,user@domain.com是收件人地址,content.txt裡面是郵件內容 ====== 在linux下利用Google的SMTP来发邮件 ====== 在维护服务器的时候,经常需要建立一个服务器错误预警系统,而邮件是一个很好的途径。 在linux下,一般是通过mail来写邮件,而传递默认使用sendmail服务。这样虽然能向外界发送邮件,但邮件不能回复,并且sendmail服务要求发送方是系统可识别用户,配置比较麻烦。下面通过使用Google的SMTP服务器来发送邮件,不但减轻服务器负担,而且可以使用类似的公共邮件地址来作为发送方。 下面所有步骤,全部基于CentOS 6.3,其他发行版本类似。 1.安装mail yum install mailx -y 2.如果想直接使用sendmail来发送邮件,需要启动sendmail服务,或者saslauthd服务 3.如果想利用外部SMTP发送邮件,需编辑/etc/mail.rc,加入以下内容 set from=demo@qq.com set smtp=smtp.qq.com set smtp-auth-user=demo set smtp-auth-password=demopass set smtp-auth=login 但是这个设置只适合那些支持非ssl链接的SMTP服务器,但对于想Google这样,强制使用SSL加密连接的,需根据第4步配置mail 4.利用Google的SMTP发送邮件 在裝有 Firefox 的 Linux 电脑, 將 ~/.mozilla/firefox/xxxxxxxx.default/ 的 cert*.db 与 key*.db 复制到 ~/.mozilla_nss_shared_db 编辑/etc/mail.rc,加入以下内容 set ssl-verify=ignore set nss-config-dir=~/.mozilla_nss_shared_db set from="myaccount@gmail.com(myname)" set smtp=smtps://smtp.gmail.com:465 set smtp-auth=login set smtp-auth-user=myaccount set smtp-auth-password=mysecret 如果想添加多个帐号,那就这样写配置文件 account starttls { set smtp-use-starttls set ssl-verify=ignore set nss-config-dir=~/.mozilla_nss_shared_db set from="myaccount@my.smtp.host(myname)" set smtp=smtp://my.smtp.host:25 set smtp-auth=login set smtp-auth-user=myaccount set smtp-auth-password=mysecret } account gmail { set ssl-verify=ignore set nss-config-dir=~/.mozilla_nss_shared_db set from="myaccount@gmail.com(myname)" set smtp=smtps://smtp.gmail.com:465 set smtp-auth=login set smtp-auth-user=myaccount set smtp-auth-password=mysecret } 不过在发送邮件的时候,需要用-A参数指定发送帐号,比如-A gmail ====== sendmail發郵件報錯的解决辦法 ====== **error: Real domain name required for sender address。** 是hostname配置的問題,重新修改hostname即可。 重新溫習一下修改hostname的步驟 1、hostname server01 【立即生效】 2、vi /etc/sysconfig/network 【重启後會讀這個文件】 添加或修改:HOSTNAME=server01 3、vi /etc/hosts 【跟各個應用有着千絲萬縷的關系,一定得改】 在127.0.0.1後面添加主機名server01 **error: Relaying denied. IP name lookup failed** 解决问题:\\ 修改access文件,将本机ip加入后,问题解决! 具体方法:\\ /etc/mail/access 加入 xxx.xxx.xxx.xxx RELAY