linux下使用自带mail发送邮件(超简单)

论坛 期权论坛 脚本     
匿名技术用户   2021-1-14 14:39   442   0

linux 发邮件最简单的办法

最近想通过linux监控系统状况并自动报警,一般Linux发送报警邮件通过本地邮箱或外部邮箱服务器,这里用最简单的方法实现linux 使用外部邮箱即可实现发送邮件功能,你只需简单注册个国内的邮件服务商邮箱,如163,也可以使用公司邮箱,需要安装mailx工具,mailx是一个小型的邮件发送程序。

具体步骤如下:

1、安装

[root@001 ~]# yum install mailx

2、编辑配置文件

[root@001 ~]# vim /etc/mail.rc #添加如下内容

set from=18911407172@163.com ---网易邮箱:

set smtp=smtp.163.com

set smtp-auth-user=18911407172@163.com

set smtp-auth-password=xxxx

set smtp-auth=login

---说明

from:对方收到邮件时显示的发件人

smtp:指定第三方发邮件的smtp服务器地址

set smtp-auth-user:第三方发邮件的用户名

set smtp-auth-password:用户名对应的密码,有些邮箱填的是授权码

smtp-auth:SMTP的认证方式,默认是login,也可以改成CRAM-MD5或PLAIN方式

3、测试

[root@001 ~]# echo "测试邮件" | mail -v -s "测试" 18911407172@163.com

以上已经实现了发邮件功能!!!

阿里云服务器关闭了22端口邮件就不能发送成功,修改465端口

2、163 个人邮箱设置 smtps 465

首先,开启 smtp

登录163个人邮箱 ——> 设置 ——> POP3/SMTP/IMAP

服务器地址:

POP3服务器: pop.163.com

SMTP服务器: smtp.163.com

IMAP服务器: imap.163.com

接着,配置 /etc/mail.rc

vim /etc/mail.rc

set from=yanggang@163.com
set smtp=smtps://smtp.163.com:465
set ssl-verify=ignore
set nss-config-dir=/root/.certs
set smtp-auth-user=yanggang@163.com
set smtp-auth-password=password-auth-code
set smtp-auth=login

创建证书目录

mkdir /root/.certs

163个人邮箱的密码,不是邮箱密码,而是授权码

申请请参见米扑博客:POP3、SMTP、IMAP 的作用和联系 (163 邮箱授权码)

然后,ssl 授权,执行如下命令

完整的执行日志如下:

[root@mimvp-hz ~]# echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/163.crt
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = GeoTrust Inc., CN = GeoTrust SSL CA - G3
verify return:1
depth=0 C = CN, ST = ZheJiang, L = HangZhou, O = "NetEase (Hangzhou) Network Co., Ltd", CN = *.163.com
verify return:1
DONE
[root@mimvp-hz ~]# certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt
[root@mimvp-hz ~]# certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt
[root@mimvp-hz ~]# certutil -L -d /root/.certs

Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI

GeoTrust SSL CA C,,
GeoTrust Global CA C,,

查看授权目录 /root/.certs/ 里的文件

# ll /root/.certs/
total 84
-rw-r--r-- 1 root root 2285 Jul 31 23:17 163.crt
-rw------- 1 root root 65536 Aug 1 15:36 cert8.db
-rw------- 1 root root 16384 Aug 1 15:36 key3.db
-rw-r--r-- 1 root root 2594 Aug 1 13:43 qq.crt
-rw------- 1 root root 16384 Jul 31 23:18 secmod.db

再次,smtps 加密发送邮件

mail -v -s "subject_title" 18911407172@163.com < /etc/passwd

# mail -v -s "subject_title" 18911407172@163.com< /etc/passwd
Resolving host smtp.163.com . . . done.
Connecting to 220.181.12.12 . . . connected.
Error in certificate: Peer's certificate issuer is not recognized.
Comparing DNS name: ".163.com"
SSL parameters: cipher=AES-128-GCM, keysize=128, secretkeysize=128,
issuer=CN=GeoTrust SSL CA - G3,O=GeoTrust Inc.,C=US
subject=CN=
.163.com,O="NetEase (Hangzhou) Network Co., Ltd",L=HangZhou,ST=ZheJiang,C=CN
220 163.com Anti-spam GT for Coremail System (163com[20141201])

更多邮件修改详细参照 https://www.jianshu.com/p/ccc2b8d7f08d

有一台机器无法发送邮件错误信息如下:

send-mail: warning: inet_protocols: IPv6 support is disabled

解决方式如下:

查看协议信息

/usr/sbin/postconf | grep inet_protocols
inet_protocols = all

修改如下:

vim /etc/postfix/main.cf

inet_protocols = all 修改为 inet_protocols = ipv4

然后重启postfix

/etc/init.d/postfix restart

即可

第二种方法

[root@linux115 ~]# service postfix restart
关闭 postfix:[失败]
启动 postfix: [确定]
[root@linux115 ~]# service postfix status
master 已死,但 pid 文件仍存

问题原因:
在/var/lib/postfix/里面有个 master.lock 的文件,可能也需要改一下拥有者和组、权限的问题


解决方法:
[root@linux115 postfix]# ll
-rw-------. 1 root postfix 33 3月 18 22:07 master.lock

[root@linux115 postfix]# chown postfix:root /var/lib/postfix/master.lock
[root@linux115 postfix]# chmod 660 /var/lib/postfix/master.lock


[root@linux115 sbin]# service postfix start
启动 postfix: [确定]
[root@linux115 sbin]# service postfix status
master (pid 8716) 正在运行...

1) 无邮件正文

mail -s "主题" 收件地址

% mail -s "测试" 1968089885@foxmail.com

2) 有邮件正文

  • mail -s "主题" 收件地址< 文件(邮件正文.txt)

% mail -s "邮件主题" 1968089885@foxmail.com < /data/findyou.txt

  • echo "邮件正文" | mail -s 邮件主题 收件地址

% echo "邮件正文内容" | mail -s "邮件主题" 1968089885@foxmail.com

  • cat 邮件正文.txt | mail -s 邮件主题 收件地址

% cat /data/findyou.txt | mail -s "邮件主题" 1968089885@foxmail.com

3) 带附件

  • mail -s "主题" 收件地址 -a 附件 < 文件(邮件正文.txt)

% mail -s "邮件主题" 1968089885@foxmail.com -a /data/findyou.tar.gz < /data/findyou.txt

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP