centos 定时任务(cron)通过第三方邮件服务器(MTA)发送邮件

前言

有时会需要把一些日志或者任务结果发送到用户邮箱,特此记录一下定时任务和邮箱信息的配置。

定时任务

守护进程 crond定期(每分钟)检查是否有要执行的任务,任务调度分为两类:系统任务调度用户任务调度

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。配置文件/etc/crontab。(若要配置定时reboot任务,需配置在此)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
10 21 * * * root reboot

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒、自定义脚本等。配置文件/var/spool/cron/usernamne,用户亦可以用命令crontab定制自己的计划任务。如每隔一分钟给指定邮箱发信息,crontab -u username -e

1
2
MAILTO="yourmailaddress@**.com"
*/1 * * * * echo 'message'

ps:crontab中任何程序产生的输出都会以邮件的形式发送给由MAILTO指定的对象,若未指定则发给任务运行的用户(可于/var/spool/mail/username中查看),此时可通过.forward 或配置/etc/aliases 发送到外部邮箱。

邮件配置

用系统自带的postfix配置MTA太费事儿,所以采用163邮箱的SMTP服务。

1.邮箱开启SMTP服务

登录邮箱,在设置里打开POP3/SMTP/IMAP,勾选POP3/SMTP服务IMAP/SMTP服务,并设置自己的客户端授权密码

2.centos安装mailx(相当于MUA)

1
yum install mailx

3.centos配置163邮箱信息,在文件 /etc/mail.rc末尾添加如下信息
1
2
3
4
5
set from="*********@163.com"
set smtp=smtp.163.com
set smtp-auth-user=*********@163.com
set smtp-auth-password=客户端授权密码
set smtp-auth=login

ps:防火墙配置(vultr要联系客服“开光”25端口)