Mail.1

MAIL(1)

MAIL(1)

FreeBSD General Commands Manual

MAIL(1)

mail, Mail, mailx

发送和接收邮件

mail [-dEiInv] [-s subject] [-c cc-addr] [-b bcc-addr] [-F] to-addr ... [-sendmail-option ...] mail [-dEHiInNv] [-F] -f [name] mail [-dEHiInNv] [-F] [-u user] mail [-d] -e [-f name]

mail 实用程序是一个智能邮件处理系统,它的命令语法让人想起 ed(1) ,其中的行被消息替换。

可以使用以下选项:

-v

详细模式。 交付的详细信息显示在用户的终端上。

-d

调试模式。 有关详细信息,请参阅 debug 邮件选项。

-e

测试(默认情况下,系统)邮箱中是否存在邮件。 如果有邮件则返回退出状态 0;否则,返回退出状态 1。

-H

只写一个标题摘要,然后退出。

-E

不要发送正文为空的消息。 这对于来自 cron(8) 脚本的管道错误很有用。

-i

忽略 tty 中断信号。 这在嘈杂的电话线上使用 mail 时特别有用。

-I

即使输入不是终端,也强制 mail 以交互模式运行。 特别是,发送邮件时的 ‘~’ 特殊字符仅在交互模式下有效。

-n

启动时禁止读取系统范围的 mail.rc 文件。

-N

在阅读邮件或编辑邮件文件夹时禁止初始显示邮件标题。

-s subject

在命令行上指定 subject 。 (只有 -s 标志之后的第一个参数用作主题;小心引用包含空格的主题。)

-c cc-addr

将抄送副本发送到用户的 cc-addr 列表。 cc-addr 参数应该是一个以逗号分隔的名称列表。

-b bcc-addr

向用户的密件 bcc-addr 列表发送密件抄送。 bcc-addr 参数应该是一个以逗号分隔的名称列表。

-f [mbox]

读入您的 mbox (或指定文件)的内容进行处理;当您 quit 时, mail 会将未删除的消息写回此文件。

-F

将消息记录在以第一个收件人命名的文件中。 该名称是在邮件标题的 “To:” 行中首先找到的地址的登录名部分。 覆盖 record 变量(如果已设置)。

-u user

相当于:

mail -f /var/mail/user

在启动时, mail 将按顺序执行系统命令文件 /usr/share/misc/mail.rc 、 /usr/local/etc/mail.rc 和 /etc/mail.rc 中的命令,除非系统明确告知不要这样做使用 -n 选项。 接下来,执行用户个人命令文件 ~/.mailrc 中的命令。 然后, mail 实用程序检查其命令行选项以确定是否要发送新消息,或者是否要读取现有邮箱。

要将消息发送给一个或多个人,可以使用参数调用 mail ,这些参数是邮件将被发送到的人的姓名。 然后,您需要输入您的消息,然后在一行的开头输入 ⟨control-D⟩ 。 回复或发送邮件 下面的部分描述了可帮助您撰写信件的一些 mail 功能。

在正常使用中, mail 不提供任何参数,并在邮局检查您的邮件,然后打印出找到的每条邮件的一行标题。 当前消息最初是第一条消息(编号为 1),可以使用 print 命令(可以缩写为 p )打印。 您可以像在 ed(1) 中的行之间移动一样在消息之间移动,使用命令 +- 前后移动以及简单的数字。

检查消息后,您可以 delete (d) 消息或 reply (r) 消息。 删除会导致 mail 程序忘记该消息。 这不是不可逆转的;消息可以通过给出它的编号来 undeleted (u) ,或者可以通过给出 exit (x) 命令中止 mail 会话。 但是,已删除的消息通常会消失,再也看不到了。

可以给诸如 printdelete 之类的命令一个消息编号列表作为参数,以一次应用于多个消息。 因此, “delete 1 2” 删除消息 1 和 2,而 “delete 1-5” 删除消息 1 到 5。 特殊名称 ‘*’ 表示所有消息, ‘$’ 表示最后一条消息;因此,可以在 “top *” 中使用打印消息前几行的命令 top 来打印所有消息的前几行。

您可以使用 reply 命令设置对消息的响应,将其发回给发件人。 然后,您输入的文本(直到文件结尾)定义了消息的内容。 在撰写邮件时, mail 会特别处理以字符 ‘~’ 开头的行。 例如,键入 ~m (单独一行)会将当前消息的副本放入响应中,将其右移一个制表位(参见下面的 indentprefix 变量)。 其他转义将设置主题字段,添加和删除消息的收件人,并允许您转义到编辑器以修改消息或转义到 shell 以运行某些命令。 (这些选项在下面的摘要中给出。)

您可以使用 quit (q) 命令结束 mail 会话。 已检查的消息将转到您的 mbox 文件,除非它们已被删除,在这种情况下它们将被丢弃。 未经审查的邮件会返回邮局。(参见上面的 -f 选项)。

也可以创建个人分发列表,例如,您可以将邮件发送给 “cohorts” 并发送给一组人。 可以通过放置类似的行来定义此类列表

alias cohorts bill ozalp jkf mark kridle@ucbcory

在您的主目录中的文件 .mailrc 中。 此类别名的当前列表可以在 mail 中使用 alias 命令显示。 可以通过编辑 /etc/mail/aliases 创建系统范围的分发列表,参见 aliases(5) 和 sendmail(8) ;这些以不同的语法保存。 在您发送的邮件中,个人别名将在发送给其他人的邮件中扩展,以便他们能够 reply 收件人。 发送邮件时系统范围的别名不会扩展,但任何返回到机器的回复都会扩展系统范围的别名,因为所有邮件都通过 sendmail(8) 。

mail 实用程序有许多选项可以在 .mailrc 文件中设置以改变其行为;因此 “set askcc” 启用 askcc 功能。 (这些选项总结如下。)

(改编自邮件 Mail Reference Manual 。)

每个命令都单独在一行上键入,并且可以在命令词之后使用参数。 该命令不需要全部输入 — 使用与输入前缀匹配的第一个命令。 对于以消息列表为参数的命令,如果没有给出消息列表,则使用满足命令要求的下一条消息转发。 如果当前消息的前面没有消息,则向后搜索,如果根本没有好的消息,则 mail 类型 “No applicable messages” 并中止命令。

-

打印出前面的消息。 如果给定一个数字参数 n, 则转到前 n N 条消息并打印它。

#

忽略该行的其余部分作为注释。

?

打印命令的简短摘要。

!

执行后面的 shell(参见 sh(1) 和 csh(1)) 命令。

Print

(P) 与 print 类似,但也打印出忽略的标题字段。 另请参阅 print, ignoreretain

Reply

(R) 回复发起人。 不回复原始邮件的其他收件人。

Type

(T) Print 与打印命令相同。

alias

(a) 不带参数,打印出所有当前定义的别名。 使用一个参数,打印出该别名。 使用多个参数,创建新别名或更改旧别名。

alternates

(alt) 如果您在多台机器上拥有帐户, alternates 命令很有用。 它可用于通知 mail 列出的地址确实是您。 当您 reply 邮件时, mail 不会将邮件副本发送到 alternates 列表中列出的任何地址。 如果给定的 alternates 命令没有参数,则显示当前的替代名称集。

chdir

(c)- 将用户的工作目录更改为指定的,如果给定的话。 如果没有给出目录,则更改为用户的登录目录。

copy

(co) copy 命令的作用与 save 相同,只是它不会在您 quit 时将用于删除的消息标记为删除。

delete

(d) 将消息列表作为参数并将它们全部标记为已删除。 已删除的消息不会保存在 mbox 中,它们也不能用于大多数其他命令。

dp

(也 dt) 删除当前消息并打印下一条消息。 如果没有下一条消息, mail 会显示 “at EOF” 。

edit

(e) 获取消息列表并将文本编辑器依次指向每个消息。 从编辑器返回时,该消息被读回。

exit

(exx) 在不修改用户的系统邮箱、他的 mbox 文件或他在 -f 中的编辑文件的情况下立即返回到 shell。

file

(fi) 同 folder

folders

列出文件夹目录中的文件夹名称。

folder

(fo) folder 命令切换到一个新的邮件文件或文件夹。 没有参数,它会告诉您当前正在阅读哪个文件。 如果你给它一个参数,它会写出你在当前文件中所做的更改(例如删除)并读入新文件。 一些特殊的约定被认可为名称。 ‘#’ 表示上一个文件, ‘%’ 表示您的系统邮箱, “%user” 表示用户的系统邮箱, ‘&’ 表示您的 mbox 文件, “+folder” 表示您的文件夹目录下的文件。

from

(f) 获取消息列表并打印它们的消息标题。

headers

(h) 列出当前的报头范围,这是一个 18 个消息组。 如果给出 ‘+’ 参数,则打印下一个 18 个消息组,如果给出 ‘-’ 参数,则打印前一个 18 个消息组。

help

? 的同义词

hold

(ho, 也 preserve) 获取消息列表并将其中的每条消息标记为保存在用户的系统邮箱中,而不是保存在 mbox 中。 不覆盖 delete 命令。

ignore

将命名的标题字段列表添加到 ignored list. 列表中。 当您打印消息时,忽略列表中的标题字段不会打印在您的终端上。 此命令对于抑制某些机器生成的标头字段非常方便。 TypePrint 命令可用于打印整个消息,包括忽略的字段。 如果 ignore 不带参数执行,它会列出当前被忽略的字段集。

inc

合并在阅读邮件时收到的任何新邮件。 新消息被添加到消息列表的末尾,并且当前消息被重置为第一条新邮件消息。 这不会重新编号现有的消息列表,也不会导致保存到目前为止所做的任何更改。

mail

(m) 将登录名和通讯组名作为参数,并将邮件发送给这些人。

mbox

指示在您退出时将消息列表发送到主目录中的 mbox 。 如果您 not 设置 hold 选项,这是消息的默认操作。

more

(mo) 获取消息列表并调用该列表上的寻呼机。

next

(n, 如 + 或 CR) 按顺序转到下一条消息并键入它。 使用参数列表,键入下一个匹配的消息。

preserve

(pre) hold 的同义词。

print

(p) 获取消息列表并在用户终端上键入每条消息。

quit

(q) 终止会话,将所有未删除、未保存的消息保存在用户登录目录中的 mbox 文件中,保留其系统邮箱中标记为 holdpreserve 或从未引用的所有消息,并从其系统邮箱中删除所有其他消息。 如果会话期间有新邮件到达,则会给出消息 “You have new mail” 。 如果在编辑带有 -f 标志的邮箱文件时给出,则重写编辑文件。 除非重写编辑文件失败,否则会返回到 shell,在这种情况下,用户可以使用 exit 命令退出。

reply

(r) 获取消息列表并将邮件发送给指定消息的发件人和所有收件人。 不得删除默认消息。

respond

reply 的同义词。

retain

将命名的标题字段列表添加到 retained list 中。 当您打印消息时,仅保留列表中的标题字段显示在您的终端上。 所有其他标头字段都被抑制。 typeprint 命令可用于完整地打印消息。 如果在没有参数的情况下执行 retain ,它会列出当前保留的字段集。

save

(s) 获取消息列表和文件名,并将每条消息依次附加到文件末尾。 引号中的文件名,后跟行数和字符数会在用户终端上回显。

set

(se) 不带参数,打印所有变量值。 否则,设置选项。 参数的形式为 option=value ( ‘=’ 前后没有空格)或 option 。 引号可以放在赋值语句的任何部分来引用空格或制表符,即 “set indentprefix="->"

saveignore

Saveignoresave ignore printtype 的内容。 通过 save 保存消息或自动保存到 mbox 时,会过滤掉如此标记的标题字段。

saveretain

Saveretainsave retainprinttype 的内容。 如此标记的标题字段是唯一在通过 save 保存或自动保存到 mbox 时与消息一起保存的字段。 Saveretain 覆盖 saveignore

shell

(sh) 调用 shell 的交互式版本。

size

获取消息列表并打印出每条消息的字符大小。

source

source 命令从文件中读取命令。

top

获取消息列表并打印每行的前几行。 打印的行数由变量 toplines 控制,默认为 5。

type

(t) print 的同义词。

unalias

获取由 alias 命令定义的名称列表并丢弃记住的用户组。 组名不再具有任何意义。

undelete

(u) 获取消息列表并将每条消息标记为 not 删除。

unread

(U) 获取消息列表并将每条消息标记为 not 读。

unset

获取选项名称列表并丢弃它们的记忆值; set 的逆。

visual

(v) 获取消息列表并在每条消息上调用显示编辑器。

write

(w) 与 save 类似,不同之处在于 保存消息体( (不包括 标题)。对于通过消息系统发送和接收源程序文本等任务非常有用。

xit

(x) exit 的同义词。

z

mail 实用程序以窗口形式显示邮件标题,如 headers 命令中所述。 您可以使用 z 命令将 mail 的注意力转移到下一个窗口。 此外,您可以使用 z- 移动到上一个窗口。

以下是波浪号转义的摘要,用于编写消息以执行特殊功能。 波浪号转义仅在行首被识别。 “tilde escape” 这个名字有点用词不当,因为实际的 escape 字符可以通过选项转义来设置。

~a

将 sign= 选项中的签名字符串插入到消息中。

~A

将 Sign= 选项中的签名字符串插入到消息中。

~b name ...

将给定姓名添加到抄送收件人列表中,但不要使姓名在抄送:行中可见( “blind” 抄送)。

~c name ...

将给定名称添加到抄送收件人列表中。

~d

将主目录中的 dead.letter 文件读入消息中。

~e

对到目前为止收集的消息调用文本编辑器。 编辑会话完成后,您可以继续将文本附加到消息中。

~f messages

将命名消息读入正在发送的消息中。 如果未指定消息,则读入当前消息。 当前被忽略的消息头(通过 ignoreretain 命令)不包括在内。

~F messages

~f 相同,除了包含所有消息头。

~h

通过依次键入每个字段并允许用户将文本附加到末尾或使用当前终端擦除和终止字符来修改字段来编辑消息标题字段。

~i string

将命名选项的值插入到消息的文本中。

~m messages

将命名的消息读入正在发送的消息中,按制表符缩进或按 indentprefix 的值缩进。 如果未指定消息,则阅读当前消息。 当前被忽略的消息头(通过 ignoreretain 命令)不包括在内。

~M messages

~m 相同,但包含所有消息头。

~p

打印出到目前为止收集的消息,以消息头字段开头。

~q

如果设置了 save ,则中止正在发送的消息,将消息复制到主目录中的 dead.letter 。

~r filename, ~r !command

~< filename, ~< !command

将命名文件读入消息中。 如果参数以 ‘!’ 开头,则字符串的其余部分被视为任意系统命令并被执行,标准输出插入到消息中。

~R string

使用 string 作为回复字段。

~s string

使命名字符串成为当前主题字段。

~t name ...

将给定名称添加到直接收件人列表中。

~v

对目前收集的消息调用替代编辑器(由 VISUAL 环境变量定义)。 通常,替代编辑器将是屏幕编辑器。 退出编辑器后,您可以继续将文本附加到消息的末尾。

~w filename

将消息写入指定文件。

~x

~q 一样退出,但消息未保存在 dead.letter 中。

~! command

执行指示的 shell 命令,然后返回消息。

~| command, ~^ command

将消息作为过滤器通过命令传递。 如果命令没有输出或异常终止,则保留消息的原始文本。 命令 fmt(1) 通常用作重新调整消息的 command 。

~: mail-command, ~_ mail-command

执行给定的 mail 命令。 但是,并非所有命令都是允许的。

~.

在输入时模拟文件结尾。

~?

打印可用命令转义的摘要。

~~ string

在以单个 ‘~’ 开头的消息中插入文本字符串。 如果您更改了转义字符,那么您应该将该字符加倍以发送它。

选项可以使用 set 命令设置,也可以使用 unsetset noname 命令禁用。 选项可以是二元的,在这种情况下,只看它们是否设置很重要;或字符串,在这种情况下,实际值是有意义的。 如果未设置选项, mail 将查找同名的环境变量。 可用选项包括:

append

导致保存在 mbox 中的消息附加到末尾而不是前置。 这应该始终设置(最好在系统范围的 mail.rc 文件之一中)。 默认为 noappend 。

ask, asksub

使 mail 提示您输入您发送的每封邮件的主题。 如果您只用换行符响应,则不会发送主题字段。 默认为 asksub 。

askbcc

导致在每封邮件末尾提示您提供其他密件抄送收件人。 用换行符响应表示您对当前列表感到满意。 默认为 noaskbcc 。

askcc

导致在每封邮件的末尾提示您提供其他抄送收件人。 用换行符响应表示您对当前列表感到满意。 默认为 noaskcc 。

autoinc

使新邮件在到达时自动合并。设置此项类似于在每个提示符处发出 inc 命令,不同之处在于当前消息不会在新邮件到达时重置。 默认为 noautoinc 。

autoprint

使 delete 命令的行为类似于 dp; 因此,删除一条消息后,将自动键入下一条消息。 默认为 noautoprint 。

crt

带值的选项 crt 用作阈值,以确定在使用 PAGER 读取消息之前必须等待多长时间。 如果 crt 未设置值,则系统中存储的终端屏幕高度用于计算阈值(请参阅 stty(1)) 。 默认为 nocrt 。

debug

设置二进制选项 debug 与在命令行中指定 -d 相同,会导致 mail 输出对调试 mail 有用的各种信息。 如果在这种模式下调用 mail 发送邮件,所有的准备工作都会进行并上报,但邮件不会真正发送出去。 默认是 nodebug 。

dot

二进制选项 dot 使 mail 将一行中的句点单独解释为您正在发送的消息的终止符。 默认为 nodot 。

escape

如果已定义,则此选项的第一个字符给出用于代替 ‘~’ 的字符以表示转义。

flipr

反转 replyReply 命令的意义。 默认为 noflipr 。

folder

用于存储消息文件夹的目录名称。 如果此名称以 ‘/’ 开头, mail 将其视为绝对路径名;否则,将找到相对于您的主目录的文件夹目录。

header

如果已定义,则在阅读邮件或编辑邮件文件夹时最初显示邮件标题。 默认为 header 。 可以通过在命令行上提供 -N 标志来禁用此选项。

hold

默认情况下,此选项用于将邮件保存在系统邮箱中。 默认为 nohold 。

ignore

导致来自终端的中断信号被忽略并作为 @ 回显。 默认为 noignore 。

ignoreeof

与 dot 相关的一个选项是 ignoreeof ,它使 mail 拒绝接受 ⟨control-D⟩ 作为消息的结尾。 Ignoreeof 也适用于 mail 命令模式。 默认为 noignoreeof 。

indentprefix

~m 波浪号转义用于缩进消息的字符串,代替正常的制表符 (^I) 。 如果它包含空格或制表符,请务必引用该值。

metoo

通常,当扩展包含发件人的组时,会从扩展中删除发件人。 设置此选项会使发件人包含在组中。 默认为 nometoo 。

quiet

首次调用时禁止打印版本。默认为 noquiet 。

record

如果已定义,则给出用于记录所有外发邮件的文件的路径名。 如果未定义,则不保存外发邮件。 默认为 norecord 。

Replyall

反转 replyReply 命令的意义。 默认为 noReplyall 。

save

如果设置了此选项,并且您使用两个 RUBOUT 擦除或删除)中止消息, mail 会将部分字母复制到您主目录中的文件 dead.letter 中。 默认为 save 。

searchheaders

如果设置了这个选项,那么 “/x:y” 形式的消息列表说明符将扩展到所有在标题字段 x 中包含子字符串 y 的消息。 字符串搜索不区分大小写。 如果省略 x ,它将默认为 “Subject” 标题字段。 “/to:y” 形式是一种特殊情况,它将扩展到所有在 “To 、” “Cc” 或 “Bcc” 标头字段中包含子字符串 y 的消息。 “to” 的检查区分大小写,因此 “/To:y” 可用于将 y 的搜索限制为 “To:” 字段。 默认为 nosearchheaders 。

toplines

如果已定义,则给出要使用 top 命令打印的消息的行数;通常会打印前五行。 冗长的 设置选项

verbose

设置选项 verbose 与在命令行上使用 -v 标志相同。 当 mail 以详细模式运行时,消息的实际传递会显示在用户终端上。 默认为 noverbose 。

DEAD

在发生中断或传递错误时保存部分消息的文件的路径名。 默认为 ~/dead.letter 。

EDITOR

edit 命令和 ~e 转义中使用的文本编辑器的路径名。 如果未定义,则使用默认编辑器。

HOME

用户主目录的路径名。

LISTER

folders 命令中使用的目录列表器的路径名。 默认为 /bin/ls 。

MAIL

用户邮箱的位置。 默认为 /var/mail 。

MAILRC

包含初始 mail 命令的文件的路径名。默认为 ~/.mailrc 。

MBOX

邮箱文件的名称。 它可以是文件夹的名称。 默认是用户主目录中的 mbox 。

PAGER

more 命令或设置 crt 变量时使用的程序的路径名。 如果未定义此选项,则使用默认分页器 less(1) 。

REPLYTO

如果设置,将用于初始化传出消息的回复字段。

SHELL

要在 ! 中使用的 shell 的路径名 命令和 ~! 转义。 如果未定义此选项,则使用默认 shell。

TMPDIR

用于创建临时文件的目录的路径名。

VISUAL

visual 命令和 ~v 转义中使用的文本编辑器的路径名。

USER

执行邮件的用户的登录名。

/var/mail/*

邮局。

~/mbox

用户的旧邮件。

~/.mailrc

给出初始 mail 命令的文件。 这可以通过设置 MAILRC 环境变量来覆盖。

/tmp/R*

临时文件。

/usr/share/misc/mail.*help

帮助文件。

/usr/share/misc/mail.rc

/usr/local/etc/mail.rc

/etc/mail.rc

系统范围的初始化文件。 每个文件都将按顺序获取(如果存在)

fmt(1), newaliases(1), vacation(1), aliases(5), sendmail(8)

mail 命令出现在版本 Version 1 AT&T UNIX 中。 该手册页源自最初由 The Mail Reference Manual Kurt Shoens 编写的邮件参考手册。

这里没有记录一些标志。 大多数对一般用户没有用。

通常, mail 只是一个指向 Mailmailx 的链接,这可能会造成混淆。

alternates 列表的名称是不正确的英文(应该是 “alternatives”), 但为了兼容性而保留。

August 8, 2018

FreeBSD 13.1-RELEASE

最后更新于

FreeBSD 中文社区