Linux send mail

Linux命令行发邮件

搞了x86工控机,装了debian,没有显示器使用ssh链接, 连接到一个新网络的时候不知道Ip是多少就无法SSH, 因此找了一下linux命令行发邮件, 通过邮件把Ip地址发出来.

1. 安装SSMTP客户端

1
2
sudo apt-get install ssmtp
sudo vim /etc/ssmtp/ssmtp.conf

2. 配置SSMTP和客户端

1
2
3
4
5
6
7
8
root=wv1124@126.com
mailhub=smtp.126.com
rewriteDomain=126.com
hostname=wv1124
FromLineOverride=Yes
AuthUser=wv1124
AuthPass=xxxxxx
UseTLS=Yes

3. 测试发邮件

1
2
3
4
5
6
7
8
9
10
11
12
> % sudo echo  hello word | mail -v -s "wv title" 276667179@qq.com                    
[<-] 220 126.com Anti-spam GT for Coremail System (126com[20140526])
[->] EHLO wv1124
[<-] 250 8BITMIME
[->] AUTH LOGIN
[<-] 334 dXNlcm5hbWU6
[->] d3YxMTI0
[<-] 334 UGFzc3dvcmQ6
[<-] 235 Authentication successful
[->] MAIL FROM:<wv@126.com>
[<-] 553 Mail from must equal authorized user
send-mail: 553 Mail from must equal authorized user

4. 报错553

能过log查看,发现使用的wv@126.com不是wv1124@126.com, 我当前linux机器的用户是wv, 于是再google一下, 找到了需要配置别名

1
sudo vim /etc/ssmtp/revaliases

配置如下:

1
2
3
4
5
6
# Format:	local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.

wv:wv1124@126.com:smtp.126.com

配置格式: 本地用户名:外网邮件地址:外网SMTP邮件服务器

再测试一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
-> % sudo echo  hello word | mail -v -s "wv title" 276667179@qq.com
[<-] 220 126.com Anti-spam GT for Coremail System (126com[20140526])
[->] EHLO wv1124
[<-] 250 8BITMIME
[->] AUTH LOGIN
[<-] 334 dXNlcm5hbWU6
[->] d3YxMTI0
[<-] 334 UGFzc3dvcmQ6
[<-] 235 Authentication successful
[->] MAIL FROM:<wv1124@126.com>
[<-] 250 Mail OK
[->] RCPT TO:<276667179@qq.com>
[<-] 250 Mail OK
[->] DATA
[<-] 354 End data with <CR><LF>.<CR><LF>
[->] Received: by wv1124 (sSMTP sendmail emulation); Sun, 27 Nov 2016 23:13:25 +0800
[->] From: "wv" <wv1124@126.com>
[->] Date: Sun, 27 Nov 2016 23:13:25 +0800
[->] To: 276667179@qq.com
[->] Subject: wv title
[->] User-Agent: Heirloom mailx 12.5 6/20/10
[->] MIME-Version: 1.0
[->] Content-Type: text/plain; charset=us-ascii
[->] Content-Transfer-Encoding: 7bit
[->]
[->] hello word
[->] .
[<-] 250 Mail OK queued as smtp3,DcmowABHHpsa+DpY7BgFAw--.7851S2 1480259611
[->] QUIT
[<-] 221 Bye

5. 163邮箱配置有点不一样/etc/ssmtp/ssmtp.conf

mailhub需要配置端口号

1
2
3
4
5
6
7
8
root=wv1124@163.com
mailhub=smtp.163.com:465
rewriteDomain=126.com
hostname=wv1124
FromLineOverride=Yes
AuthUser=wv1124
AuthPass=xxxxxx
UseTLS=Yes

测试还是报错

1
2
3
4
5
6
7
8
9
10
11
$ sudo echo  hello word | mail -v -s "wv title" 276667179@qq.com
[<-] 220 163.com Anti-spam GT for Coremail System (163com[20141201])
[->] EHLO wv-n270
[<-] 250 8BITMIME
[->] AUTH LOGIN
[<-] 334 dXNlcm5hbWU6
[->] d3YxMTI0
[<-] 334 UGFzc3dvcmQ6
[<-] 535 Error: authentication failed
send-mail: Authorization failed (535 Error: authentication failed)
Can't send mail: sendmail process failed with error code 1

我开启了客户授权码, 把上面配置密码改为授权码

6. 把ifconfig发送出去

1
sudo ifconfig | mail -v -s "wv title" 276667179@qq.com