1.设置cscript为指定编译器:
在dos中执行: cscript //h:cscript //s
2. 在记事本中编写vbs脚本,另存为 sendmail.vbs, 内容如下:
Set objEmail = CreateObject("CDO.Message")
Call SendMail()
Sub SendMail
objEmail.From = "xxx@163.com" '发件人
objEmail.To = "yyy@163.com" '收件人
objEmail.Subject = "邮件主题" '电子邮件主题主题
objEmail.Textbody = "电子邮件内容" '电子邮件内容
objEmail.AddAttachment "c:\附件.txt"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.163.com" 'SMTP服务器地址
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxx" '用户名
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxx" '密码
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 '明文验证
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 'SMTP端口号
objEmail.Configuration.Fields.Update
objEmail.Send
End Sub
3. 在记事本中编写bat脚本,另存为 sendmail.bat, 内容如下:
call automail.vbs
4. 可用windows定时任务来调用sendmail.bat.
Win7(64位)中IIS配置Access数据库的asp.net程序中出现“未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序”,经过摸索:
打开IIS,右击【应用程序池】中的你的程序池名,选【高级设置】,在第一项【常规】中【启用32位应用程序】选择TRUE,就可以了!
May 13 15:29:23 lcha2 postfix/postdrop[1269]: warning: mail_queue_enter: create file maildrop/330426.1269: No such file or directory
May 13 15:29:23 lcha2 postfix/postdrop[1439]: warning: mail_queue_enter: create file maildrop/357169.1439: No such file or directory
May 13 15:29:23 lcha2 postfix/postdrop[1654]: warning: mail_queue_enter: create file maildrop/984222.1654: No such file or directory
init-+-aacraid |-atd |-bdflush |-crond---125*[crond---sendmail---postdrop]
可见crond守护进程启动了sendmail,进而启动了postdrop。查看crond的配置, crontab -e,都没有发现几秒就启动的程序,所以可能是sendmail自己一旦邮件发送不成功,就持续重新发送而导致持续启动postdrop,而postdrop总是执行失败,导致持续写入日志到日志文件。日志文件增大的速率超过了logrotate的删除频率,所以占据了100%的磁盘空间。
while true do date +%H:%M:%S >> 1.txt ps -e | grep sendmail | wc >>1.txt sleep 5 done从结果文件1.txt中发现每10分钟,就会启动一个sendmail进程。crontab里有个没有这个频率的启动项,但有一个每5分钟自动网络校时的启动项。把这个项注视掉,重新启动crond,发现仍然有sendmail的启动,从而排除了这个原因。难道是crond本身每10分钟就自动发送邮件吗?按照man 5 crontab的解释,把/etc/crontab的MAILTO设为"",这样crond就不会发送邮件了。重新启动crond服务,发现crond仍然10分钟启动一次sendmail,太奇怪了!干脆直接关闭crond服务,然后再也没有新的sendmail进程产生。难道是crontab被黑了?为什么MAILTO=""了,还会调用sendmail呢?把所有的sendmail进程都kill掉,然后启动crond, 仍然会生产sendmail,看来crond和sendmail的关系绝非一般。
*/10 * * * * root /usr/lib/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 -A
Cannot open /var/log/sa/sa20: No such file or directory
*/10 * * * * root /usr/lib/sa/sa1 1 1 &>/dev/null
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 -A &>/dev/null
- 日志文件是系统分析的关键,要确保所有日志文件目录可用,如果不可用,syslogd不会自动创建它们,也就失去了记录日志的机会!
- crond,logrotate,syslogd相互配合
- crond和sendmail的关系绝非一般,crontab中MAILTO设置了空,crond仍然会调用sendmail发送邮件,解决方式是把crond执行的命令最后加上 &> /dev/null。
- 要全面了解一个软件包,比如cron.d是crond的一部分,作者就就吃亏在这个上面
- 多动手测试,熟练使用bash命令