首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Unix/Linux 系统自动化管理 邮件系统篇(3)

Unix/Linux 系统自动化管理 邮件系统篇(3)

自动发送邮件的脚本实现
在 SLES11 系统中,sendmail-8.13.6-9.15 已经被默认安装,清单 9 所示的 Perl 脚本可以实现从本地主机自动发送邮件到远程邮箱的功能,发送的邮件将包含发送者的 mail 地址、接收者的 mail 地址、邮件主题、邮件的内容以及两个附件。
清单 9. 自动发送邮件的 Perl 脚本
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
31
32
33
#!/usr/bin/perl
# 将要使用 sendmail 来发送邮件
my $mailprog = "/usr/sbin/sendmail";
# 发送者的邮件地址
my $ senderemail = "sender\@cn.ibm.com";
# 发送者的名字
my  $sender = "sender";
# 发送时的时间
my $datestring=`date +%m.%d.%Y`;
# 接收者的 email 地址
my $email = "receiver\@cn.ibm.com";
# Send file to user in email
open(MAIL, "|$mailprog -f $sender -t $senderemail") or die;
# 创建发送邮件的头
print MAIL "From: $sender\n";
print MAIL "To: $email\n";
# 主题
print MAIL "Subject: Automation test on SELS $datestring\n";
#email 的信件内容
print MAIL "Hi All\nthis is the automation test result on $datestring. Please check
the  attached files.\n";
# 第一个附件
$file = "/tmp/28279.txt";
open(FILE, "uuencode $file $file |") or die;
print MAIL  <FILE>;
close(FILE);
# 第二个附件
$file="/tmp/28280.txt";
open(FILE, "uuencode $file $file |") or die;
while( <FILE>) { print MAIL; };
close(FILE);
# 完成邮件发送
close(MAIL);




AIX 的 sendmail 配置AIX 的 mail 系统中最重要的三个组成部分是用户接口 (the user interface)、消息路由程序 (the message routing program) 和消息投递程序 (the message delivery program) 或 mailer。AIX 系统中的 mail 程序就是所谓的用户接口 (the user interface),它对应上文提到的邮件用户代理 MUA;sendmail 程序就是所谓的消息路由程序 (the message routing program),它对应前面所说的邮件传输代理 MTA。在传递邮件的时后,如有必要,sendmail 命令将与远程系统建立 TCP/IP 连接 , 然后使用 SMTP 传递邮件到远程系统。
AIX 邮件系统的工作原理和配置,和 Linux 基本都相同,特殊的地方有以下几点。
  • 生成配置文件的脚本的位置                        /usr/samples/tcpip/sendmail/cf/aixsample.mc 被用来生成 sendmail 相应的配置文件。
  • sendmail daemon 启动和关闭的方式                        启动 sendmail:
    1
    startsrc -s sendmail




    关闭 sendmail:
    1
    stopsrc -s sendmail




  • 通过 SMTP 服务器发 Internet 邮件                        在使用 SMTP 代理的情况下,sendmail 需要对 /etc/sendmail.cf 配置文件中的 DS 项进行修改。DS 项是指被用来转发邮件的主机。注意,该配置项修改以后,sendmail daemon 必须重启才能生效。/etc/sendmail.cf 文件的具体的修改内容如清单 10 所示。
    清单 10./etc/sendmail.cf 文件的修改内容
    1
    2
    # "Smart" relay host (may be null)
    DS[SMTP 的主机 IP]




自动发送邮件的脚本实现
在 AIX6100-03 操作系统中,sendmail version AIX6.1/8.13.4 已经被默认安装。在这样的配置环境中,本节将给出两个实现不同功能的 Perl 脚本。
清单 11 中的 Perl 脚本实现了邮件带主题和附件的功能。
清单 11. 带有附件的邮件自动化发送邮件脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl
# 接受者的邮件系统
my $email = "receiver\@cn.ibm.com";
# 将作为附件发送出去的两个文件
my $file1="/tmp/1.txt";
my $file2="/tmp/2.txt";
# 将要使用的邮件发送程序
my $mailprog = "/usr/bin/mail";
# 记录发送时间
my $datestring=`date +%m\/%d\/%Y`;
chomp($datestring);
#email 的主题
my $subject= "\"Subject: Test on AIX $datestring with attachment\"";
# 产生发送邮件命令
my $cmd_sendmail = "uuencode  $file1 \"1.txt\" $file2  \"2.txt\" |";
$cmd_sendmail .=  "$mailprog -s $subject $email ";
# 执行发送命令
system($cmd_sendmail);




清单 12 中的 Perl 脚本实现了不带附件、有邮件内容的自动化发送邮件的功能。
清单 12. 不带附件的邮件自动发送邮件的脚本实现
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl
# 接受者的邮件系统
my $email = "receiver\@cn.ibm.com";
# 记录发送时间
my $datestring=`date +%m\/%d\/%Y`;
chomp($datestring);
#email 的主题
my $subject= "\"Subject: Test on AIX $datestring \"";
# 产生发送邮件命令
my  $cmd_sendmail = "echo $message |";
$cmd_sendmail .=  "$mailprog -s $subject $email";
# 执行发送命令
`$cmd_sendmail`;

返回列表