Provided by: manpages-zh_1.5.2-1.1_all bug

NAME

       msmtp - An SMTP client

概要 (SYNOPSIS)

       发邮件模式 (默认):
              msmtp [option...] [--] recipient...
              msmtp [option...] -t [--] [recipient...]

       服务器消息模式:
              msmtp [option...] --serverinfo

       远程消息队列模式:
              msmtp [option...] --rmqs=host|@domain|#queue

描述 (DESCRIPTION)

       在默认的发邮件模式下,msmtp 从标准输入读取邮件,然后把它送给SMTP 服务器处理
       当处于服务器消息模式下,msmtp 会显示SMTP 服务器的有关信息
       而当它处于远程消息队列模式时,msmtp 将为主机或者域发出RMQS 请求,或者向SMTP 服务器发出队列
       请求

退出状态 (EXIT STATUS)

       这里使用标准的sendmail  退出状态代码,就像在  sysexits.h  中定义的那样    想快速上手,可跳
       到EXAMPLES 部分

选项 (OPTIONS)

       这里的选项将覆盖配置文件中的相同选项
       他们在某些地方与sendmail 兼容

       一般选项 (General options)

              --version
                     显示版本信息。这些信息包括TLS/SSL   库信息(如果有),用于验证的库以及这些库
                     所支持的验证方式,还有默认的全局配置文件和用户配置文件信息

              --help 显示帮助

              -P, --pretend
                     显示使用的配置信息,但不真正执行什么操作。密码将会以 *** 的形式显示

              -d, --debug
                     显示很多调试信息,包括与SMTP      服务器的所有会话。小心使用这个选项(潜在风
                     险): 所有输出没经过什么处理,密码可能以一种极易解码的方式被显示出来

       改变操作模式选项 (Changing the mode of operation)

              -S, --serverinfo
                     显示SMTP 服务器的信息并退出。信息中包含了所有支持的特性,如邮件大小限制、 验
                     证方式、TLS、DSN 等等。如果服务器支持TLS 的话,还有TLS 证书信息

              --rmqs=(host|@domain|#queue)
                     为指定的主机或者域发送一个开启远程消息队列的请求,或者向SMTP  服务器发送队列
                     请求,并退出

       配置选项 (Configuration options)

              -C, --file=filename
                     用指定的文件代替~/.msmtprc 作为用户配置文件

              -a, --account=account_name
                     用指定的帐号代替"default" 字段中的帐号。这个帐号的设置能以命令行选项的方式进
                     行 更改。但这个选项不能与 --host 合用

              --host=hostname
                     用命令行指定一个SMTP        服务器,不用配置文件中的任何数据。这个选项不能与
                     --account 选项合用

              --port=number
                     设置要连接的端口。参看下面 port 命令

              --timeout=(off|seconds)
                     设定网络超时。参看下面  timeout 命令。为了兼容老版本,--connect-timeout 作为
                     这个选项的别名

              --protocol=(smtp|lmtp)
                     设定所用的协议。参看下面 protocol 命令

              --auth[=(on|off|method)]
                     开启或关闭验证,也可随意选择一个验证方式。参看下面 auth 命令

              --user=[username]
                     设置或清空用于验证的用户名。参看下面 user 命令

              --tls[=(on|off)]
                     开启或关闭TLS 加密。参看 tls 命令

              --tls-starttls[=(on|off)]
                     开启或关闭TLS 加密的STARTTLS 。参看下面 tls_starttls 命令

              --tls-trust-file=[file]
                     设置或清空TLS 加密的trust file。参看下面 tls_trust_file 命令

              --tls-key-file=[file]
                     设置或清空TLS 加密的key file。参看下面 tls_key_file 命令

              --tls-cert-file=[file]
                     设置或清空TLS 加密的cert file。参看下面 tls_cert_file 命令

              --tls-certcheck[=(on|off)]
                     开启或关闭TLS 加密的证书检验。参看下面 tls_certcheck 命令

              --tls-force-sslv3[=(on|off)]
                     强制使用SSLv3。参看下面 tls_force_sslv3 命令

              --domain=[string]
                     设置SMTP EHLO (or LMTP LHLO)命令的参数。参看 domain 命令

       发件模式的选项 (Options specific to sendmail mode)

              --auto-from[=(on|off)]
                     开启或关闭automatic envelope-from addresses。默认关闭。参看下面 auto_from 命
                     令

              -f, --from=address
                     设定envelope-from address。仅当 auto_from 关闭时才有用
                     如果未用    --account--host   指定帐号,这个选项会选择第一个拥有给
                     定envelope-from  address  的帐号。看看  from  命令。如果没找到符合条件的帐号
                     ,就用"default"

              --maildomain=[domain]
                     为生成的envelope-from addresses 指定一个域。仅当 auto_from 开启时才有用。 参
                     看下面 maildomain 命令

              -N, --dsn-notify=(off|cond)
                     设置或清空DSN notification conditions。参看下面 dsn_notify 命令

              -R, --dsn-return=(off|ret)
                     设置或清空 DSN  notification  amount。参看下面  dsn_return  命令。注意为  兼
                     容sendmail ,hdrs 被定义成 headers 的别名

              --keepbcc[=(on|off)]
                     是否保留Bcc header。参看下面 keepbcc 命令

              -X, --logfile=[file]
                     设置或清除log file。参看下面 logfile 命令

              --syslog[=(on|off|facility)]
                     是否启用syslog。参看下面 syslog 命令

              -t, --read-recipients
                     从邮件的To, Cc, Bcc headers 处提取收件人地址,而不从命令行读入

              --     从这以后的参数均被认为是收件人地址,即使以 '-' 开头。这标志着选项列表结束了

       以下选项可用,但兼容的sendmail 忽略。
       -Btype, -bm, -Fname, -G, -hN, -i, -L tag, -m, -n, -O option=value, -ox value, -v

用法 (USAGE)

       通常,全局配置文件和(或)用户配置文件包含了SMTP 服务器以及如何与之通信的所有信 息。但是,几
       乎所有的选项也可以在命令行上配置

       SMTP 服务器的信息以 accounts 方式组织在一起。每个帐号描述了一台SMTP 服  务器的主机名、验证
       设置、TLS 设置等等。每个配置文件能定义多个帐号

       在发件模式,必须要有一个envelope-from,这被作为原始发件人发送给SMTP  服务器。 当 auto_from
       开启时,Envelope-from 的地址也能自动生成,或者也能明确地 用 form--from 设定。auto_from
       能生成形如  user@domain  这样的地址。user  部分将以 $USER 代替,如果不行,就用 $LOGNAME 代
       替,再不行的话,就用当前登录的用户名。domain 部分能用 maildomain 设 定。如果maildomain  未
       设好,envelope-from 中将只有用户名,而不含域名。

       用户能选择用哪个帐号,以下方法三选一:

       --account=id
              用给定帐号。命令行选项会覆盖配置文件中的设定

       --host=hostname
              只用来自命令行的选项,不用配置文件中的

       --from=address
              从全局或用户配置文件中选择与   from  命令指定的地址匹配的envelop-from  地址。  只有
              --account--host 都没有设定时才用得到这个选项

       如果以上选项一个都没用到,又或者用了 --from 但没有一个帐号与  from  命令的结果匹配,那就使
       用"default" 帐号

配置文件 (CONFIGURATION FILES)

       如果全局配置文件存在并可读,会调用文件SYSCONFDIR/msmtprc,SYSCONFDIR  依赖于你的  系统。用
       --version 可以找到用了哪个目录
       如果用户配置文件存在并可读,就调用它(默认是~/.msmtprc )。用户配置中的帐号会覆盖 全局配置中
       的相同帐号。除了拥有者的读写权外,决不给配置文件其它多余的权限。无论  哪个配置文件中的设置
       都可以用命令行选项更改

       配置文件是个普通文本而已,忽略空行和注释行(以'#'开头)
       其它行必须包含一条命令以及可能的参数
       如果参数的第一个或最后一个有空白,要用双引号(")括起来
       如果文件的第一个字符是"~",将会用$HOME 代替。如果命令能接受一个 on 参数, 它也会接受空参数
       并默认它是 on 参数。
       命令的集合形成groups 。每组以 account 命令开头,接着是SMTP 服务器的设置

       想快速上手,可跳到EXAMPLES 部分

       命令说明如下:

       defaults
              设置defaults。接下去的设置命令将当前配置文件中的所有帐号指定默认值

       account name [:account[,...]]
              开始定义新帐号,填充默认值
              如果有逗号和预先定义好的帐号名跟在account   后面,所有列表中的帐号会拥有同样的   设
              置,并填充默认值

       host hostname
              邮件发送目的地SMTP 服务器,参数可以是主机名或者网络地址。每个帐号都必须包含  这个命
              令

       port number
              SMTP  服务器监听端口。默认端口会从你操作系统的service database 中获取。对于 SMTP 来
              说,服务名是"smtp" (默认端口25),除非使用不带STARTTLS 的TLS  ,在此种  情况下服务名
              是"ssmtp"(445)。对于LMTP,服务名是"lmtp"

       timeout (off|seconds)
              设置或清除网络超时(以秒计)。off 参数表示不设超时,这意味着使用操作系统 默认的超时设
              定
              为与老版本兼容, connect_timeout 可作为这条命令的别名

       protocol (smtp|lmtp)
              设置所用的协议,目前只支持SMTP 和LMTP,默认SMTP。想知道默认端口,看上面的 port 命令

       auto_from [(on|off)]
              是否允许automatic  envelope-from。默认不允许。开启时,会生成类似user@domain  形  式
              的envelope-from。  user 部分将以 $USER 代替,如果不行,就用 $LOGNAME 代替,再不行的
              话,就用当前登录的用户名。domain  部分能用  maildomain  设定。如果maildomain   未设
              好,envelope-from 中将只有用户名,而 不含域名。关闭时,,envelope-from 必须明确指定

       from envelope_from
              设置envelope-from,仅当 auto_from 关闭时才有用

       maildomain [domain]
              设置envelope 域名部分。仅当 auto_from 开启时才有用,域名可以为空

       auth [(on|off|method)]
              这条命令控制是否允许SMTP    验证。你没有必要自己来设定验证方式,只要用了    on   参
              数,msmtp 会为你选择一个最佳方案(看下面)。
              你可能需要用 user 命令来设置一个用户名,用 password 命令设置一个 密码。如果不指定密
              码,而msmtp  运行时发现在验证时又需要密码,msmtp 会试着从 ~/.netrc 中找一个,如果不
              行的话,msmtp 会提示你输入一个
              支持的验证方式有 plain, cram-md5, digest-md5, gssapi,  external,  login,  and  ntlm
              。注意由于可能缺少下面的验证库,你  会有一个或多个验证方式不能用。用 --version 选项
              看看支持哪些方法。
              plainlogin 把你的验证信息在网上以明文传输,因此应该仅把它们和 tls 命令一起用。
              如果不自己选择方式的话,msmtp 会选择SMTP 服务器支持的最安全的方式,安全指你的  信息
              在网上不会以明文发送。在TLS 加密连接下任何一种验证方式都是安全的。如果不 用TLS ,只
              有gssapi,digest-md5,cram-md5 and ntlm 是安全的。
              external  方法比较特殊:真正的验证操作位于SMTP  协议之外,发送TLS  客户端   证书(看
              tls_cert_file   命令)就是个典型例子。external  只确认这次验  证对于给定的用户是否成
              功,如果不给用户名的话,就只确认验证是否成功。[注:总之  它就把具体验证和加密的事情
              全推给了外面程序,与msmtp 无关了]。msmtp 不会选这种 验证方式,你必须亲自指定。

       user [username]
              设置用于SMTP 验证的用户名,参数为空时清除用户名。证验操作必须用 auth 命 令激活

       password [secret]
              设置用于SMTP  验证的密码,参数为空时清除密码。证验操作必须用 auto 命令 激活。如果不
              指定密码,而验证操作又需要密码,msmtp  会试着从  ~/.netrc   中找一个,   如果不行的
              话,msmtp 会提示你输入一个

       ntlmdomain [domain]
              设置用于 ntlm 验证方式的域名,默认不用域名(等同于空参数)。但有些服务器好 像要的,即
              便给出的是任意字符串

       tls [(on|off)]
              是否允许TLS/SSL   加密连接。不是每个服务器都支持TLS   ,但有了TLS,可以防止有人偷听
              与SMTP  的对话。除非用  tls_certcheck 命令关闭服务器证书验证,否则每次都要 完备性检
              查。为全面发挥TLS/SSL 效力,推荐用 tls_trust_file 命令(看下面)

       tls_starttls [(on|off)]
              缺省状态下,TLS 加密以STARTTLS SMTP 命令激活。关闭后,TLS 加密会立即启动(这是  有名
              的SMTP tunneled through TLS/SSL)。默认端口是465
              为兼容老版本, tls_nostarttls 作为 tls_starttls off 的别名

       tls_trust_file [file]
              这条命令激活严格的服务器证书验证。这个文件必须包含一个或多个以PEM 格式存在的受 信任
              的证书注册机构(CAs)。空参数会关闭这个特性。msmtp 通过受信文件验证服务器的 可靠性

       tls_key_file [file]
              与 tls_cert_file 命令一起,使msmtp 在需要时发一份客户端证书给SMTP 服务 器。这个文件
              必须包含PEM 格式证书的私钥。空参数会关闭这个特性

       tls_cert_file [file]
              与  tls_key_file 命令一起,使msmtp 在需要时发一份客户端证书给SMTP 服务器。 这个文件
              必须包含PEM 格式的证书。空参数会关闭这个特性

       tls_certcheck [(on|off)]
              当TLS 启用时,默认对服务器证书进行完备性检查。如果没有检查未通过,会取消TLS 连接。
              为兼容老版本, tls_nocertcheck 作为 tls_certcheck off 的别名

       tls_force_sslv3 [(on|off)]
              强制使用TLS/SSL 的SSLv3 版本。可能在一些用SSL 的老旧服务器上有用。不过万不得 已,别
              用这个

       dsn_notify (off|condition)
              设定在哪在情况下,邮件系统应该发送DSN (Delivery Status Notification)信息。 off 参数
              明确关闭DSN 请求,这意味着让邮件决定什么时候发DSN 信息,默认如 此。 condition  可以
              是    never   ,从不发送请求。或者是以逗号(没有空   格!)分隔的一个或多个下列参数:
              failure 失败时发送, delay 延迟时 发送, success 成功时发送。SMTP 服务器必须支持DSN
              才行。

       dsn_return (off|amount)
              在一封邮件中允许返回多少DSN  信息。  off  明确关闭DSN  请求,这意味着让邮件  系统决
              定,默认如此。 amount 可以是 headers 只返回信息头,full 返回邮件全部内容。SMTP 服务
              器必须支持DSN 才行

       domain argument
              用来设定SMTP EHLO(or LMTP LHLO)命令的参数。默认是 localhost (笨方法,但 有效)。其它
              可能的选择有:邮件地址的域名部分(provider.example for joe@provider.  example),或者
              如果可能的话给出你主机的完整域名

       keepbcc [(on|off)]
              当发送邮件时是否保留Bcc header 信息,默认不保留。

       logfile [file]
              不给参数会关闭记录,默认如此。
              当选择一个logfile 时,msmtp 会为每一封指定logfile 帐号的邮件添加一行记录
              记录中会包含如下信息:日期、时间、SMTP 服务器名字、是否用TLS、是否验证、用于 验证的
              用户名(仅当用了验证后)、信件来自哪里、收件人地址、发出去的邮件大小(仅    当发送成功
              时)、SMTP 状态代码、SMTP 错误信息(仅当发送失败且错误信息可得时)、 错误信息(仅当发送
              失败且错误信息可得时)、退出代码(来自 sysexits.h;EX_OK 代表 发送成功)
              如果文件是一短横(-),msmtp 就把记录信息输出至标准输出

       syslog [(on|off|facility)]
              是否允许syslog 。facility 可以是LOG_USER、LOG_MAIL、LOG_LOCAL0...LOG_LOCAL7  诸多策
              略中的一个,默认是LOG_USER。
              每次msmtp  通过含有这条命令的帐号发邮件时,它均会在syslog 服务中以选定的策略追 加一
              条记录
              记录中会包含如下信息:日期、时间、SMTP 服务器名字、是否用TLS、是否验证、用于 验证的
              用户名(仅当用了验证后)、信件来自哪里、收件人地址、发出去的邮件大小(仅    当发送成功
              时)、SMTP 状态代码、SMTP 错误信息(仅当发送失败且错误信息可得时)、 错误信息(仅当发送
              失败且错误信息可得时)、退出代码(来自 sysexits.h;EX_OK 代表 发送成功)

范例 (EXAMPLES)

       配置文件 (Configuration file)

       # Set default values for all following accounts.
       defaults
       tls on
       tls_trust_file /etc/ssl/certs/ca-certificates.crt
       logfile ~/.msmtp.log

       # A freemail service
       account freemail
       host smtp.freemail.example
       from joe_smith@freemail.example
       auth on
       user joe.smith
       password secret

       # A second mail address at the same freemail service
       account freemail2 : freemail
       from joey@freemail.example

       # The SMTP server of the provider.
       account provider
       host mail.provider.example
       from smithjoe@provider.example
       auth on
       user 123456789
       password my_password

       # Set a default account
       account default : provider

       在Mutt 中使用msmtp (Using msmtp with Mutt)

       为msmtp 建立一个配置文件,然后把下面几行加到Mutt 配置文件中去
       set sendmail="/path/to/msmtp"
       set use_from=yes
       set realname="Your Name"
       set from=you@example.com
       set envelope_from=yes
       envelope_from=yes 让Mutt 用msmtp的 -f 参数。这样msmtp 会选择符合you@example.com 的第一个帐
       号
       你也可以选用 -a 参数
       set sendmail="/path/to/msmtp -a my-account"
       或者从命令行中设定所有内容
       set sendmail="/path/to/msmtp --host=mailhub -f me@example.com --tls"

       如果你有多个邮件帐号,并且想让Mutt  用   -f   参数让你可以在帐号之间轻松切换,把下面几行加
       到Mutt 配置文件中去
       macro generic "<esc>1" ":set from=you@example.com"
       macro generic "<esc>2" ":set from=you@your-employer.example"
       macro generic "<esc>3" ":set from=you@some-other-provider.example"

       在mail 中用上msmtp (Using msmtp with mail)

       定义一个默认帐号,然后把下面一行放在 ~/.mailrcset sendmail="/path/to/msmtp"

文件/系统环境 (FILES / ENVIRONMENT)

       SYSCONFDIR/msmtprc
              全局配置文件。用 --version 找出系统中的SYSCONFDIR 在哪里

       ~/.msmtprc
              用户配置文件

       ~/.netrc
              文件.netrc  包含了登录信息。如果在配置文件中没有找到密码信息的话,msmtp 会在提 示用
              户输入之前先找这个文件。 .netrc 的用法在 netrc(5) 或 ftp(1) 中能找到

       $USER, $LOGNAME
              在构造信件来源地址时,这些变量会覆盖用户的登录名。如果未指定$USER,就用$LOGNAME

       $TMPDIR
              建立临时文件的地方。如果未设置就用系统默认定义
              仅当用到 -t/--read-recipients  选项时,才会创建临时文件。这个文件用于缓存邮件头,不
              包括邮件本身,所以文件不 会太大

作者 (AUTHORS)

       msmtp was written by Martin Lambers <marlam@marlam.de>.
       Other authors are listed in the AUTHORS file in the source distribution.

参看 (SEE ALSO)

       mutt(1), mail(1), sendmail(8), netrc(5) or ftp(1)

[中文版维护人]

       "Nickel Cobalt" <angelerosster@gmail.com>

[中文版最新更新]

       2007/05/01

[中文版校对人]

       "Nickel Cobalt" <angelerosster@gmail.com>

《中文MAN-PAGE计划》

       http://cmpp.linuxforum.net

                                             2006-11                                     MSMTP(1)