使用者工具

網站工具


os:linux:寄mail

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
os/linux/寄mail.txt · 上一次變更: 2013/11/20 07:05 由 eddie