Provided by: manpages-zh_1.6.3.3-2_all
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 選項看看支持哪些方法。 plain 和 login 把你的驗證信息在網上以明文傳輸,因此應該僅把它們和 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) 定義一個默認帳號,然後把下面一行放在 ~/.mailrc 中 set 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
跋
本頁面中文版由中文 man 手冊頁計劃提供。 中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh 2006-11 MSMTP(1)