600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 《Linux命令行与shell脚本编程大全》 第二十五章 学习笔记

《Linux命令行与shell脚本编程大全》 第二十五章 学习笔记

时间:2024-06-05 06:05:36

相关推荐

《Linux命令行与shell脚本编程大全》 第二十五章 学习笔记

第一部分:Linux命令行

《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell

《Linux命令行与shell脚本编程大全》 第二章:走进shell

《Linux命令行与shell脚本编程大全》 第三章:基本的bash shell命令

《Linux命令行与shell脚本编程大全》 第四章:更多的bash shell命令

《Linux命令行与shell脚本编程大全》 第五章:使用Linux环境变量

《Linux命令行与shell脚本编程大全》 第六章:理解Linux文件权限

《Linux命令行与shell脚本编程大全》 第七章:管理文件系统

《Linux命令行与shell脚本编程大全》 第八章:安装软件程序

《Linux命令行与shell脚本编程大全》 第九章:使用编辑器

第二部分:shell脚本编程基础

《Linux命令行与shell脚本编程大全》 第十章:构建基本脚本

《Linux命令行与shell脚本编程大全》 第十一章:使用结构化命令

《Linux命令行与shell脚本编程大全》 第十二章:更多的结构化命令

《Linux命令行与shell脚本编程大全》 第十三章:处理用户输入

《Linux命令行与shell脚本编程大全》 第十四章:呈现数据

《Linux命令行与shell脚本编程大全》 第十五章:控制脚本

第三部分:高级shell编程

《Linux命令行与shell脚本编程大全》 第十六章:创建函数

《Linux命令行与shell脚本编程大全》 第十七章:图形化桌面上的脚本编程

《Linux命令行与shell脚本编程大全》 第十八章:初识sed和gawk

《Linux命令行与shell脚本编程大全》 第十九章:正则表达式

《Linux命令行与shell脚本编程大全》 第二十章:sed进阶

《Linux命令行与shell脚本编程大全》 第二十一章:gawk进阶

《Linux命令行与shell脚本编程大全》 第二十二章:使用其他shell

第四部分:高级shell脚本编程主题

《Linux命令行与shell脚本编程大全》 第二十三章:使用数据库

《Linux命令行与shell脚本编程大全》 第二十四章:使用Web

《Linux命令行与shell脚本编程大全》 第二十五章:使用E-mail

《Linux命令行与shell脚本编程大全》 第二十六章:编写脚本实用工具

《Linux命令行与shell脚本编程大全》 第二十七章:shell脚本编程进阶

第二十五章:使用E-mail

Linux E-mail基础

Linux中的E-mail

在Linux环境中,E-mail过程通常分为3个功能:

邮件传送代理(Mail Transfer Agent,MTA)

邮件投递代理(Mail Delivery Agent,MDA)

邮件用户代理(Mail User Agent,MUA)

有些E-mail软件合并了MDA和MTA,有些合并了MDA和MUA

邮件传送代理

MTA负责处理系统中邮件的收发

对于每个发出的邮件消息,MTA必须确定收件人地址

如果目的地是本地系统,MTA会将它直接发送到本地邮箱或将消息传给本地MDA来投递

如果目的地主机是远程邮件服务器,MTA必须和远程主机上的MTA建立一个通信连接来传递

MTA常用两种方法来将邮件递送到远程主机上:

直接递送(direct delivery)

代理递送(proxy delivery)

如果Linux系统直接连接到了互联网,通常它可以直接将 发往远程主机收件人的消息直接投递到远程主机上,

MTA用域名系统(Domain Name System,DNS)解析IP,然后用简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)建立网络连接

如果Linux没有直接连接到互联网,或者它不想和其他远程主机直接通信,它通常会使用一个 前端主机(smart host)。

前端主机是一个代理服务器,它会接收来自Linux系统的邮件消息,然后尝试直接将他们投递到目标收件人

流氓服务器可以通过前端主机转发商业邮件(Unsolicited Commercial Email,UCE)消息来发送垃圾邮件,还可以隐藏身份。“现在”大多数前端主机在向其他主机转发消息前都会要求某种形式的认证。

对于收到的邮件,MTA必须能够接受来自远程邮件服务器的连接请求,接受发往本地用户的消息。这个过程最常用的协议依然是SMTP

邮件投递代理

MDA只关注将邮件投递到本地用户

Linux中有3种常用的不同类型用户邮箱:

/var/spool/mail或/var/mail文件

$HOME/mail文件

Maildir风格的邮箱目录

Maildir是相对较新的功能,一些高级的MTA、MDA和MUA应用支持。邮箱是一个目录,每条消息是该目录中的一个单独的文件,而不用每个消息做为邮箱文件的一部分

几乎所有的MDA和MUA都能使用/var/spool/mail邮箱文件

邮件用户代理

MUA不接收消息,只显示已经在邮箱中的消息。

许多MUA可以发送邮件(要么利用SMTP的前端主机功能,要么自动将消息递送到本地MTA)

一些流行的MUA程序:

Mailx

Mailx只能读取/var/mail格式或者$HOME/mail格式的消息

Mailx也可以发送邮件

$ mail su1216Cc: Subject: testthis is a test.$ mail"/var/mail/su1216": 1 message 1 new>N 1 su1216 三 11月 20 16: 15/640 test? Return-path: <su1216@su1216-optiplex-380>Envelope-to: su1216@su1216-OptiPlex-380Delivery-date: Wed, 20 Nov 16:24:32 +0800Received: from su1216 by su1216-OptiPlex-380 with local (Exim 4.71)(envelope-from <su1216@su1216-optiplex-380>)id 1Vj35L-0005Bj-WFfor su1216@su1216-OptiPlex-380; Wed, 20 Nov 16:24:32 +0800Date: Wed, 20 Nov 16:24:32 +0800Message-Id: <E1Vj35L-0005Bj-WF@su1216-OptiPlex-380>To: <su1216@su1216-OptiPlex-380>Subject: testX-Mailer: mail (GNU Mailutils 2.1)From: su1216 <su1216@su1216-optiplex-380>this is a test.

完成email之后,使用ctrl+d结束邮件即可

Mutt(利用了ncurses库)

图形化E-mail客户端

KDE窗口环境中的KMail

GNOME窗口环境中的Evolution

上面两个在shell脚本编程中用处不大

建立服务器

sendemail

sendemail通常运行在后台模式,监听来自远程邮件服务器的SMTP连接并转发来自本地用户的邮件

sendemail配置文件

sendemail.cf文件

这个配置文件告诉sendemail如何处理目标邮件地址来确定如何转发这些消息以及转发到哪里。

文件默认位置为/etc/mail/sendemail.cf

sendemail.cf由规则组构成

规则可以有在配置文件中定义的帮助程序:

类:定义一些共用的短语来帮助规则组织是哦波额特定类型的消息

宏:设定一些值来简化在配置文件中输入长字符串

选项:设置参数来控制sendemal程序的运行

配置文件由一系列的类、宏、选项和规则组构成。每个功能都在配置文件中以单个文本行的形式定义。

配置文件中的每行都以定义该行命令的单个字母开头。以空格或制表符开头的行是前一命令行的延续。以井号开头的行是注释

sendemail配置文件命令

Postfix

Postfix由Wietse Venema开发,为Unix类型的服务器提供一个备用MTA

Postfix使用一个一直做为后台进程运行的主程序,主程序会使用其他帮助程序,这些帮助程序会根据他们的功能按需启动。

Postfix帮助程序

处理消息时,Postfix使用不同的消息队列来管理E-mail消息。每个消息队列都包含一些处于Postfix系统中不同消息状态的消息。

Postfix消息队列

如果Postfix系统在任何时间要被关闭,消息会仍然保存在最后一次放置它们的队列中。在Postfix重启后,它会自动开始处理来自这些队列的消息。

Postfix配置文件

Postfix使用3个独立的配置文件来允许你设定用来指导Postfix如何处理消息的参数。与一些MTA不同,它可以在Postfix运行时修改配置信息,然后运行一个命令来让Postfix加载新的配置而不用完全停掉邮件服务器

这3个文件通常位于/etc/postfix

Postfix配置文件

在配置文件中每个Postfix参数和它的值都在单独一行中,格式如下:

parameter = value

如果需要指定一个前端主机,可以使用relayhost参数,例如:

relayhost =

也可以在这里指定一个ip地址,但是必须使用方括号括起来

使用Mailx发送消息

Mailx程序发送消息的命令格式为:

mail [-eIinv] [-a header] [-baddr] [-c addr] [-s subj] to-addr

Mailx 命令行参数

下面是发送邮件的一个例子,当然我们也可以把正文保存到文本中:

$ mailNo mail for su1216$ echo "test" | mail -s "Test message" su1216$ mail"/var/mail/su1216": 1 message 1 new>N 1 su1216 四 12月 5 16: 15/637 Test message? Return-path: <su1216@su1216-optiplex-380>Envelope-to: su1216@su1216-OptiPlex-380Delivery-date: Thu, 05 Dec 16:47:06 +0800Received: from su1216 by su1216-OptiPlex-380 with local (Exim 4.71)(envelope-from <su1216@su1216-optiplex-380>)id 1VoUaQ-0005tl-Dlfor su1216@su1216-OptiPlex-380; Thu, 05 Dec 16:47:06 +0800Date: Thu, 05 Dec 16:47:06 +0800Message-Id: <E1VoUaQ-0005tl-Dl@su1216-OptiPlex-380>Subject: Test messageTo: <su1216@su1216-OptiPlex-380>X-Mailer: mail (GNU Mailutils 2.1)From: su1216 <su1216@su1216-optiplex-380>test?

Mutt程序

1995年由Michael Elkins开发

Mutt可以在E-mail消息中将文件作为附件发送Mailx只能作为正文发送

Mutt命令行

Mutt命令行参数

使用Mutt

基本命令 格式:

mutt -sSubject-afile--recipients

这里的收件人列表用空格分割

这里的file必须填写绝对路径,或是基于运行mutt命令的当前工作目录的相对路径。添加多个文件可以在-a后面添加多个file用空格分开

echo "email content: test!" | mutt -s "A mail from su1216" -- su1216

转贴请保留以下链接

本人blog地址

/

/su1216/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。