.\" -*-nroff-*- .\" .\" msmtp version 1.4.9 .\" .TH MSMTP 1 2006-11 .SH NAME msmtp \- An SMTP client .SH 概要 (SYNOPSIS) .IP "發郵件模式 (預設):" .B msmtp [option...] [--] recipient... .br .B msmtp [option...] -t [--] [recipient...] .IP "伺服器消息模式:" .B msmtp [option...] --serverinfo .IP "遠程消息隊列模式:" .B msmtp [option...] --rmqs=\fIhost\fP|\fI@domain\fP|\fI#queue\fP .SH 描述 (DESCRIPTION) 在預設的發郵件模式下,msmtp 從標準輸入讀取郵件,然後把它送給SMTP 伺服器處理 .br 當處於伺服器消息模式下,msmtp 會顯示SMTP 伺服器的有關信息 .br 而當它處於遠程消息隊列模式時,msmtp 將為主機或者域發出RMQS 請求,或者向SMTP 伺服器發出隊列請求 .SH 退出狀態 (EXIT STATUS) 這裏使用標準的sendmail 退出狀態代碼,就像在 sysexits.h 中定義的那樣 .BR 想快速上手,可跳到EXAMPLES 部分 .SH 選項 (OPTIONS) 這裏的選項將覆蓋配置檔案中的相同選項 .br 他們在某些地方與sendmail 相容 .IP "\fB一般選項 (General options)\fP" .RS .IP "--version" 顯示版本信息。這些信息包括TLS/SSL 庫信息(如果有),用於驗証的庫以及這些庫 所支持的驗証方式,還有預設的全局配置檔案和使用者配置檔案信息 .IP "--help" 顯示幫助 .IP "-P, --pretend" 顯示使用的配置信息,但不真正執行什麼操作。密碼將會以 *** 的形式顯示 .IP "-d, --debug" 顯示很多調試信息,包括與SMTP 伺服器的所有會話。小心使用這個選項(潛在風險): 所有輸出沒經過什麼處理,密碼可能以一種極易解碼的方式被顯示出來 .RE .IP "\fB改變操作模式選項 (Changing the mode of operation)\fP" .RS .IP "-S, --serverinfo" 顯示SMTP 伺服器的信息並退出。信息中包含了所有支持的特性,如郵件大小限制、 驗証方式、TLS、DSN 等等。如果伺服器支持TLS 的話,還有TLS 証書信息 .IP "--rmqs=(\fIhost\fP|\fI@domain\fP|\fI#queue\fP)" 為指定的主機或者域發送一個開啟遠程消息隊列的請求,或者向SMTP 伺服器發送隊列 請求,並退出 .RE .IP "\fB配置選項 (Configuration options)\fP" .RS .IP "-C, --file=\fIfilename\fP" 用指定的檔案代替~/.msmtprc 作為使用者配置檔案 .IP "-a, --account=\fIaccount_name\fP" 用指定的帳號代替"default" 字段中的帳號。這個帳號的設置能以命令行選項的方式進行 更改。但這個選項不能與 \fB--host\fP 合用 .IP "--host=\fIhostname\fP" 用命令行指定一個SMTP 伺服器,不用配置檔案中的任何數據。這個選項不能與 \fB--account\fP 選項合用 .IP "--port=\fInumber\fP" 設置要連接的端口。參看下面 \fBport\fP 命令 .IP "--timeout=(\fIoff\fP|\fIseconds\fP)" 設定網路超時。參看下面 \fBtimeout\fP 命令。為了相容老版本,--connect-timeout 作為這個選項的別名 .IP "--protocol=(\fIsmtp\fP|\fIlmtp\fP) 設定所用的協議。參看下面 \fBprotocol\fP 命令 .IP "--auth[=(\fIon\fP|\fIoff\fP|\fImethod\fP)]" 開啟或關閉驗証,也可隨意選擇一個驗証方式。參看下面 \fBauth\fP 命令 .IP "--user=\fI[username]\fP" 設置或清空用於驗証的使用者名。參看下面 \fBuser\fP 命令 .IP "--tls[=(\fIon\fP|\fIoff\fP)]" 開啟或關閉TLS 加密。參看 \fBtls\fP 命令 .IP "--tls-starttls[=(\fIon\fP|\fIoff\fP)]" 開啟或關閉TLS 加密的STARTTLS 。參看下面 \fBtls_starttls\fP 命令 .IP "--tls-trust-file=[\fIfile\fP]" 設置或清空TLS 加密的trust file。參看下面 \fBtls_trust_file\fP 命令 .IP "--tls-key-file=[\fIfile\fP]" 設置或清空TLS 加密的key file。參看下面 \fBtls_key_file\fP 命令 .IP "--tls-cert-file=[\fIfile\fP]" 設置或清空TLS 加密的cert file。參看下面 \fBtls_cert_file\fP 命令 .IP "--tls-certcheck[=(\fIon\fP|\fIoff\fP)]" 開啟或關閉TLS 加密的証書檢驗。參看下面 \fBtls_certcheck\fP 命令 .IP "--tls-force-sslv3[=(\fIon\fP|\fIoff\fP)]" 強制使用SSLv3。參看下面 \fBtls_force_sslv3\fP 命令 .IP "--domain=[\fIstring\fP]" 設置SMTP EHLO (or LMTP LHLO)命令的參數。參看 \fBdomain\fP 命令 .RE .IP "\fB發件模式的選項 (Options specific to sendmail mode)\fP" .RS .IP "--auto-from[=(\fIon\fP|\fIoff\fP)]" 開啟或關閉automatic envelope-from addresses。預設關閉。參看下面 \fBauto_from\fP 命令 .IP "-f, --from=\fIaddress\fI" 設定envelope-from address。僅當 \fIauto_from\fP 關閉時才有用 .br 如果未用 \fB--account\fP 或 \fB--host\fP 指定帳號,這個選項會選擇第一個擁有給 定envelope-from address 的帳號。看看 \fBfrom\fP 命令。如果沒找到符合條件的帳號 ,就用"default" .IP "--maildomain=[\fIdomain\fP]" 為生成的envelope-from addresses 指定一個域。僅當 \fIauto_from\fP 開啟時才有用。 參看下面 \fBmaildomain\fP 命令 .IP "-N, --dsn-notify=(\fIoff\fP|\fIcond\fP)" 設置或清空DSN notification conditions。參看下面 \fBdsn_notify\fP 命令 .IP "-R, --dsn-return=(\fIoff\fP|\fIret\fP)" 設置或清空 DSN notification amount。參看下面 \fBdsn_return\fP 命令。注意為 相容sendmail ,\fIhdrs\fP 被定義成 \fIheaders\fP 的別名 .IP "--keepbcc[=(\fIon\fP|\fIoff\fP)]" 是否保留Bcc header。參看下面 \fBkeepbcc\fP 命令 .IP "-X, --logfile=[\fIfile\fP]" 設置或清除log file。參看下面 \fBlogfile\fP 命令 .IP "--syslog[=(\fIon\fP|\fIoff\fP|\fIfacility\fP)]" 是否啟用syslog。參看下面 \fBsyslog\fP 命令 .IP "-t, --read-recipients" 從郵件的To, Cc, Bcc headers 處提取收件人地址,而不從命令行讀入 .IP "--" 從這以後的參數均被認為是收件人地址,即使以 '-' 開頭。這標誌著選項列表結束了 .RE .PP 以下選項可用,但相容的sendmail 忽略。 .br -B\fItype\fP, -bm, -F\fIname\fP, -G, -h\fIN\fP, -i, -L \fItag\fP, -m, -n, -O \fIoption=value\fP, -o\fIx\fP \fIvalue\fP, -v .SH 用法 (USAGE) 通常,全局配置檔案和(或)使用者配置檔案包含了SMTP 伺服器以及如何與之通信的所有信 息。但是,幾乎所有的選項也可以在命令行上配置 .PP SMTP 伺服器的信息以 \fIaccounts\fP 方式組織在一起。每個帳號描述了一台SMTP 服 務器的主機名、驗証設置、TLS 設置等等。每個配置檔案能定義多個帳號 .PP 在發件模式,必須要有一個envelope-from,這被作為原始發件人發送給SMTP 伺服器。 當 \fIauto_from\fP 開啟時,Envelope-from 的地址也能自動生成,或者也能明確地 用 \fBform\fP 或 \fB--from\fP 設定。\fIauto_from\fP 能生成形如 user@domain 這樣的地址。user 部分將以 \fB$USER\fP 代替,如果不行,就用 \fB$LOGNAME\fP 代替,再不行的話,就用當前登入的使用者名。domain 部分能用 \fBmaildomain\fP 設 定。如果maildomain 未設好,envelope-from 中將只有使用者名,而不含域名。 .PP 使用者能選擇用哪個帳號,以下方法三選一: .IP "--account=\fIid\fP" 用給定帳號。命令行選項會覆蓋配置檔案中的設定 .IP "--host=\fIhostname\fP 只用來自命令行的選項,不用配置檔案中的 .IP "--from=\fIaddress\fP" 從全局或使用者配置檔案中選擇與 \fBfrom\fP 命令指定的地址匹配的envelop-from 地址。 只有 \fB--account\fP 和 \fB--host\fP 都沒有設定時才用得到這個選項 .PP 如果以上選項一個都沒用到,又或者用了 \fB--from\fP 但沒有一個帳號與 \fBfrom\fP 命令的結果匹配,那就使用"default" 帳號 .SH 配置檔案 (CONFIGURATION FILES) 如果全局配置檔案存在並可讀,會調用檔案SYSCONFDIR/msmtprc,SYSCONFDIR 依賴於你的 系統。用 \fB--version\fP 可以找到用了哪個目錄 .br 如果使用者配置檔案存在並可讀,就調用它(預設是~/.msmtprc )。使用者配置中的帳號會覆蓋 全局配置中的相同帳號。除了擁有者的讀寫權外,決不給配置檔案其它多餘的權限。無論 哪個配置檔案中的設置都可以用命令行選項更改 .PP 配置檔案是個普通文本而已,忽略空行和注釋行(以'#'開頭) .br 其它行必須包含一條命令以及可能的參數 .br 如果參數的第一個或最後一個有空白,要用雙引號(")括起來 .br 如果檔案的第一個字符是"~",將會用$HOME 代替。如果命令能接受一個 \fIon\fP 參數, 它也會接受空參數並預設它是 \fIon\fP 參數。 .br 命令的集合形成groups 。每組以 \fBaccount\fP 命令開頭,接著是SMTP 伺服器的設置 .PP 想快速上手,可跳到EXAMPLES 部分 .PP 命令說明如下: .IP "defaults" 設置defaults。接下去的設置命令將當前配置檔案中的所有帳號指定預設值 .IP "account \fIname\fP [:\fIaccount\fP[,...]]" 開始定義新帳號,填充預設值 .br 如果有逗號和預先定義好的帳號名跟在account 後面,所有列表中的帳號會擁有同樣的 設置,並填充預設值 .IP "host \fIhostname\fP" 郵件發送目的地SMTP 伺服器,參數可以是主機名或者網路地址。每個帳號都必須包含 這個命令 .IP "port \fInumber\fP" SMTP 伺服器監聽端口。預設端口會從你作業系統的service database 中獲取。對於 SMTP 來說,服務名是"smtp" (預設端口25),除非使用不帶STARTTLS 的TLS ,在此種 情況下服務名是"ssmtp"(445)。對於LMTP,服務名是"lmtp" .IP "timeout (\fIoff\fP|\fIseconds\fP)" 設置或清除網路超時(以秒計)。\fIoff\fP 參數表示不設超時,這意味著使用作業系統 預設的超時設定 .br 為與老版本相容, \fIconnect_timeout\fP 可作為這條命令的別名 .IP "protocol (\fIsmtp\fP|\fIlmtp\fP)" 設置所用的協議,目前只支持SMTP 和LMTP,預設SMTP。想知道預設端口,看上面的 \fBport\fP 命令 .IP "auto_from [(\fIon\fP|\fIoff\fP)] 是否允許automatic envelope-from。預設不允許。開啟時,會生成類似user@domain 形 式的envelope-from。 user 部分將以 \fB$USER\fP 代替,如果不行,就用 \fB$LOGNAME\fP 代替,再不行的話,就用當前登入的使用者名。domain 部分能用 \fBmaildomain\fP 設定。如果maildomain 未設好,envelope-from 中將只有使用者名,而 不含域名。關閉時,,envelope-from 必須明確指定 .IP "from \fIenvelope_from\fP" 設置envelope-from,僅當 \fIauto_from\fP 關閉時才有用 .IP "maildomain [\fIdomain\fP]" 設置envelope 域名部分。僅當 \fIauto_from\fP 開啟時才有用,域名可以為空 .IP "auth [(\fIon\fP|\fIoff\fP|\fImethod\fP)]" 這條命令控制是否允許SMTP 驗証。你沒有必要自己來設定驗証方式,只要用了 \fIon\fP 參數,msmtp 會為你選擇一個最佳方案(看下面)。 .br 你可能需要用 \fBuser\fP 命令來設置一個使用者名,用 \fBpassword\fP 命令設置一個 密碼。如果不指定密碼,而msmtp 運行時發現在驗証時又需要密碼,msmtp 會試著從 ~/.netrc 中找一個,如果不行的話,msmtp 會提示你輸入一個 .br 支持的驗証方式有 \fIplain\fP, \fIcram-md5\fP, \fIdigest-md5\fP, \fIgssapi\fP, \fIexternal\fP, \fIlogin\fP, and \fIntlm\fP 。注意由於可能缺少下面的驗証庫,你 會有一個或多個驗証方式不能用。用 \fB--version\fP 選項看看支持哪些方法。 .br \fIplain\fP 和 \fIlogin\fP 把你的驗証信息在網上以明文傳輸,因此應該僅把它們和 \fBtls\fP 命令一起用。 .br 如果不自己選擇方式的話,msmtp 會選擇SMTP 伺服器支持的最安全的方式,安全指你的 信息在網上不會以明文發送。在TLS 加密連接下任何一種驗証方式都是安全的。如果不 用TLS ,只有gssapi,digest-md5,cram-md5 and ntlm 是安全的。 .br \fIexternal\fP 方法比較特殊:真正的驗証操作位於SMTP 協議之外,發送TLS 客戶端 証書(看 \fBtls_cert_file\fP 命令)就是個典型例子。\fIexternal\fP 只確認這次驗 証對於給定的使用者是否成功,如果不給使用者名的話,就只確認驗証是否成功。[注:總之 它就把具體驗証和加密的事情全推給了外面程式,與msmtp 無關了]。msmtp 不會選這種 驗証方式,你必須親自指定。 .IP "user [\fIusername\fP]" 設置用於SMTP 驗証的使用者名,參數為空時清除使用者名。証驗操作必須用 \fBauth\fP 命 令激活 .IP "password [\fIsecret\fP]" 設置用於SMTP 驗証的密碼,參數為空時清除密碼。証驗操作必須用 \fBauto\fP 命令 激活。如果不指定密碼,而驗証操作又需要密碼,msmtp 會試著從 ~/.netrc 中找一個, 如果不行的話,msmtp 會提示你輸入一個 .IP "ntlmdomain [\fIdomain\fP]" 設置用於 \fIntlm\fP 驗証方式的域名,預設不用域名(等同於空參數)。但有些伺服器好 像要的,即便給出的是任意字符串 .IP "tls [(\fIon\fP|\fIoff\fP)]" 是否允許TLS/SSL 加密連接。不是每個伺服器都支持TLS ,但有了TLS,可以防止有人偷聽 與SMTP 的對話。除非用 \fBtls_certcheck\fP 命令關閉伺服器証書驗証,否則每次都要 完備性檢查。為全面發揮TLS/SSL 效力,推薦用 \fBtls_trust_file\fP 命令(看下面) .IP "tls_starttls [(\fIon\fP|\fIoff\fP)]" 預設狀態下,TLS 加密以STARTTLS SMTP 命令激活。關閉後,TLS 加密會立即啟動(這是 有名的SMTP tunneled through TLS/SSL)。預設端口是465 .br 為相容老版本, \fBtls_nostarttls\fP 作為 \fBtls_starttls off\fP 的別名 .IP "tls_trust_file [\fIfile\fP]" 這條命令激活嚴格的伺服器証書驗証。這個檔案必須包含一個或多個以PEM 格式存在的受 信任的証書注冊機構(CAs)。空參數會關閉這個特性。msmtp 通過受信檔案驗証伺服器的 可靠性 .IP "tls_key_file [\fIfile\fP]" 與 \fBtls_cert_file\fP 命令一起,使msmtp 在需要時發一份客戶端証書給SMTP 服務 器。這個檔案必須包含PEM 格式証書的私鑰。空參數會關閉這個特性 .IP "tls_cert_file [\fIfile\fP]" 與 \fBtls_key_file\fP 命令一起,使msmtp 在需要時發一份客戶端証書給SMTP 伺服器。 這個檔案必須包含PEM 格式的証書。空參數會關閉這個特性 .IP "tls_certcheck [(\fIon\fP|\fIoff\fP)]" 當TLS 啟用時,預設對伺服器証書進行完備性檢查。如果沒有檢查未通過,會取消TLS 連接。 .br 為相容老版本, \fBtls_nocertcheck\fP 作為 \fBtls_certcheck off\fP 的別名 .IP "tls_force_sslv3 [(\fIon\fP|\fIoff\fP)]" 強制使用TLS/SSL 的SSLv3 版本。可能在一些用SSL 的老舊伺服器上有用。不過萬不得 已,別用這個 .IP "dsn_notify (\fIoff\fP|\fIcondition\fP)" 設定在哪在情況下,郵件系統應該發送DSN (Delivery Status Notification)信息。 \fIoff\fP 參數明確關閉DSN 請求,這意味著讓郵件決定什麼時候發DSN 信息,預設如 此。 \fIcondition\fP 可以是 \fInever\fP ,從不發送請求。或者是以逗號(沒有空 格!)分隔的一個或多個下列參數: \fIfailure\fP 失敗時發送, \fIdelay\fP 延遲時 發送, \fIsuccess\fP 成功時發送。SMTP 伺服器必須支持DSN 才行。 .IP "dsn_return (\fIoff\fP|\fIamount\fP)" 在一封郵件中允許返回多少DSN 信息。 \fIoff\fP 明確關閉DSN 請求,這意味著讓郵件 系統決定,預設如此。 \fIamount\fP 可以是 \fIheaders\fP 只返回信息頭,\fIfull\fP 返回郵件全部內容。SMTP 伺服器必須支持DSN 才行 .IP "domain \fIargument\fP" 用來設定SMTP EHLO(or LMTP LHLO)命令的參數。預設是 \fIlocalhost\fP (笨方法,但 有效)。其它可能的選擇有:郵件地址的域名部分(provider.example for joe@provider. example),或者如果可能的話給出你主機的完整域名 .IP "keepbcc [(\fIon\fP|\fIoff\fP)]" 當發送郵件時是否保留Bcc header 信息,預設不保留。 .IP "logfile [\fIfile\fP]" 不給參數會關閉記錄,預設如此。 .br 當選擇一個logfile 時,msmtp 會為每一封指定logfile 帳號的郵件添加一行記錄 .br 記錄中會包含如下信息:日期、時間、SMTP 伺服器名字、是否用TLS、是否驗証、用於 驗証的使用者名(僅當用了驗証後)、信件來自哪裏、收件人地址、發出去的郵件大小(僅 當發送成功時)、SMTP 狀態代碼、SMTP 錯誤訊息(僅當發送失敗且錯誤訊息可得時)、 錯誤訊息(僅當發送失敗且錯誤訊息可得時)、退出代碼(來自 sysexits.h;EX_OK 代表 發送成功) .br 如果檔案是一短橫(-),msmtp 就把記錄信息輸出至標準輸出 .IP "syslog [(\fIon\fP|\fIoff\fP|\fIfacility\fP)]" 是否允許syslog 。facility 可以是LOG_USER、LOG_MAIL、LOG_LOCAL0...LOG_LOCAL7 諸多策略中的一個,預設是LOG_USER。 .br 每次msmtp 通過含有這條命令的帳號發郵件時,它均會在syslog 服務中以選定的策略追 加一條記錄 .br 記錄中會包含如下信息:日期、時間、SMTP 伺服器名字、是否用TLS、是否驗証、用於 驗証的使用者名(僅當用了驗証後)、信件來自哪裏、收件人地址、發出去的郵件大小(僅 當發送成功時)、SMTP 狀態代碼、SMTP 錯誤訊息(僅當發送失敗且錯誤訊息可得時)、 錯誤訊息(僅當發送失敗且錯誤訊息可得時)、退出代碼(來自 sysexits.h;EX_OK 代表 發送成功) .SH 範例 (EXAMPLES) .B 配置檔案 (Configuration file) .PP # Set default values for all following accounts. .br defaults .br tls on .br tls_trust_file /etc/ssl/certs/ca-certificates.crt .br logfile ~/.msmtp.log .br .br # A freemail service .br account freemail .br host smtp.freemail.example .br from joe_smith@freemail.example .br auth on .br user joe.smith .br password secret .br .br # A second mail address at the same freemail service .br account freemail2 : freemail .br from joey@freemail.example .br .br # The SMTP server of the provider. .br account provider .br host mail.provider.example .br from smithjoe@provider.example .br auth on .br user 123456789 .br password my_password .br .br # Set a default account .br account default : provider .br .PP .B 在Mutt 中使用msmtp (Using msmtp with Mutt) .PP 為msmtp 建立一個配置檔案,然後把下面幾行加到Mutt 配置檔案中去 .br .B set sendmail="/path/to/msmtp" .br .B set use_from=yes .br .B set realname="Your Name" .br .B set from=you@example.com .br .B set envelope_from=yes .br envelope_from=yes 讓Mutt 用msmtp的 .BR -f 參數。這樣msmtp 會選擇符合you@example.com 的第一個帳號 .br 你也可以選用 .BR -a 參數 .br .B set sendmail="/path/to/msmtp -a my-account" .br 或者從命令行中設定所有內容 .br .B set sendmail="/path/to/msmtp --host=mailhub -f me@example.com --tls" .PP 如果你有多個郵件帳號,並且想讓Mutt 用 .BR -f 參數讓你可以在帳號之間輕鬆切換,把下面幾行加到Mutt 配置檔案中去 .br .B macro generic\ "1"\ ":set from=you@example.com" .br .B macro generic\ "2"\ ":set from=you@your-employer.example" .br .B macro generic\ "3"\ ":set from=you@some-other-provider.example" .PP .B 在mail 中用上msmtp (Using msmtp with mail) .PP 定義一個預設帳號,然後把下面一行放在 ~/.mailrc 中 .br .B set sendmail="/path/to/msmtp" .SH 檔案/系統環境 (FILES / ENVIRONMENT) .IP "SYSCONFDIR/msmtprc" 全局配置檔案。用 .B --version 找出系統中的SYSCONFDIR 在哪裏 .IP "~/.msmtprc" 使用者配置檔案 .IP "~/.netrc" 檔案.netrc 包含了登入信息。如果在配置檔案中沒有找到密碼信息的話,msmtp 會在提 示使用者輸入之前先找這個檔案。 .netrc 的用法在 .BR netrc (5) 或 .BR ftp (1) 中能找到 .br .IP "$USER, $LOGNAME" 在構造信件來源地址時,這些變量會覆蓋使用者的登入名。如果未指定$USER,就用$LOGNAME .IP "$TMPDIR" 建立臨時檔案的地方。如果未設置就用系統預設定義 .br 僅當用到 .BR -t/--read-recipients 選項時,才會創建臨時檔案。這個檔案用於緩存郵件頭,不包括郵件本身,所以檔案不 會太大 .SH 作者 (AUTHORS) msmtp was written by Martin Lambers . .br Other authors are listed in the AUTHORS file in the source distribution. .SH 參看 (SEE ALSO) .BR mutt (1), .BR mail (1), .BR sendmail (8), .BR netrc (5) or .BR ftp (1) .br .SH [中文版維護人] "Nickel Cobalt" .SH [中文版最新更新] 2007/05/01 .SH [中文版校對人] "Nickel Cobalt" .SH 《中文MAN-PAGE計劃》 http://cmpp.linuxforum.net