X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/035c5db3403da8a955b2c8f525076f89de9f2713..e6a316e73b70ee428ec701a5df2bcf795d4b1802:/man/send.man diff --git a/man/send.man b/man/send.man index b7016a41..4eb7f902 100644 --- a/man/send.man +++ b/man/send.man @@ -1,13 +1,15 @@ -.\" +.TH SEND %manext1% 2017-05-11 "%nmhversion%" +. .\" %nmhwarning% -.\" -.TH SEND %manext1% "December 22, 2013" "%nmhversion%" +. .SH NAME -send \- send a message +send \- send an nmh message .SH SYNOPSIS .HP 5 .na .B send +.RB [ \-help ] +.RB [ \-version ] .RB [ \-alias .IR aliasfile ] .RB [ \-draft ] @@ -32,36 +34,38 @@ send \- send a message .RB [ \-watch " | " \-nowatch ] .RB [ \-mts .IR smtp " | " sendmail/smtp " | " sendmail/pipe ] +.RB [ \-sendmail +.IR program ] .RB [ \-server .IR servername ] .RB [ \-port .IR port-name/number ] .RB [ \-sasl ] .RB [ \-nosasl ] -.RB [ \-saslmaxssf -.IR ssf ] .RB [ \-saslmech .IR mechanism ] +.RB [ \-authservice +.IR service ] .RB [ \-snoop ] .RB [ \-user .IR username ] .RB [ \-tls ] .RB [ \-initialtls ] .RB [ \-notls ] +.RB [ \-certverify ] +.RB [ \-nocertverify ] .RB [ \-width .IR columns ] .RB [ file \&...] -.RB [ \-version ] -.RB [ \-help ] .ad .SH DESCRIPTION -.B Send +.B send will cause each of the specified files to be delivered to each of the destinations in the \*(lqTo:\*(rq, \*(lqcc:\*(rq, \*(lqBcc:\*(rq, \*(lqDcc:\*(rq, and \*(lqFcc:\*(rq fields of the message. If .B send -is re\-distributing a message, as invoked from +is re-distributing a message, as invoked from .BR dist , then the corresponding \*(lqResent\-xxx\*(rq fields are examined instead. @@ -78,24 +82,39 @@ profile component. Most of the features attributed to are actually performed by .BR post . .PP -By default the draft is scanned for a header named -.IR Nmh-Attachment . +Before +.B send +gives the message to +.B post +for delivery, the message is processed by +.B mhbuild +to perform any necessary MIME encoding of the outgoing message. This +can be changed by the +.I buildmimeproc +profile component. +.B mhbuild +is invoked with the +.B \-auto +switch, so +.B mhbuild +directives are not processed by default. See +.IR mhbuild (1) +for more information. +.PP +.B mhbuild +will scan the message draft for a header named +.IR Attach . The draft is converted to a MIME message if one or more matches are found. -This conversion occurs before all other processing. The header name -can be changed with the -.B \-attach -option. This behavior can be disabled completely with the -.B \-noattach -option. The -.B whatnow -man page describes the user interface for managing MIME attachments via +This conversion occurs before all other processing. +.IR whatnow (1) +describes the user interface for managing MIME attachments via this mechanism. .PP The first part of the MIME message is the draft body if that body contains any non-blank characters. -The body of each header field whose name matches the -.I header-field-name -is interpreted as a file name, and each file named is included as a separate +The body of each +.I Attach +header field is interpreted as a file name, and each file named is included as a separate part in the MIME message. .PP Determination of the content MIME type inserted into the Content-Type @@ -104,9 +123,9 @@ header for each part depends on how the installation was configured. If a program, such as .B file with a -.B --mime +.B \-\-mime or -.B -i +.B \-i option, was found that can specify the type of a file as a MIME type string, then that will be used. To determine if your .B nmh @@ -130,56 +149,21 @@ if it contains characters outside of the ASCII range. See .IR mhshow (1) for more details and example syntax. .PP -Each part contains a name attribute that is the last component of the path name. -A -.I x-unix-mode -attribute containing the file mode accompanies each part. -Finally, a description attribute is generated by running the -.I file -command on the file. -.PP -The -.B -attachformat -option specifies the MIME header field formats: a value of -.B 0 -includes the -.I x-unix-mode -attribute as noted above. A value of -.BR 1 , -the default, -suppresses that, puts the file name in the -\*(lqContent-Description\*(rq header, and -adds a \*(lqContent-Disposition\*(rq header. A value of -.B 2 -adds the file -.I modification-date -parameter to the \*(lqContent-Disposition\*(rq header. You can -specify one value in your profile, and override it for individual -messages at the -.I whatnow -prompt. -.PP -Here are example message part headers, for an attachment, for each of the -.B -attachformat -values: +Each attached MIME part contains a +\*(lqContent-Description\*(rq header that includes the filename, and +adds a \*(lqContent-Disposition\*(rq header. +Here is an example of MIME part headers for an attachment: .PP .nf --attachformat 0: -Content-Type: text/plain; name="VERSION"; x-unix-mode="0644"; - charset="us-ascii" -Content-Description: ASCII text - --attachformat 1: Content-Type: text/plain; name="VERSION"; charset="us-ascii" Content-Description: VERSION Content-Disposition: attachment; filename="VERSION" - --attachformat 2: -Content-Type: text/plain; name="VERSION"; charset="us-ascii" -Content-Description: VERSION -Content-Disposition: attachment; filename="VERSION"; modification-date="Mon, 19 Dec 2005 22:39:51 -0600" .fi .PP +See +.IR mhbuild (1) +for explanation of how the Content-Disposition value is selected. +.PP If .B \-push is specified, @@ -224,9 +208,9 @@ switches invoke the .B nmh draft folder facility. This is an advanced (and highly -useful) feature. Consult the +useful) feature. Consult .IR mh-draft (5) -man page for more +for more information. .PP If @@ -254,7 +238,7 @@ lot of partial messages. The argument to tells it how long to pause between postings. .PP -.B Send +.B send with no .I file argument will query whether the draft @@ -281,7 +265,7 @@ If a \*(lqDcc:\*(rq field is encountered and the mail transport method is not in use, its addresses will be used for delivery, and the \*(lqDcc:\*(rq field will be removed from the message. The blind recipients will receive the same message sent to the sighted -recipients. *WARNING* Recipients listed in the \*(lqDcc:\*(rq field receive no +recipients. *WARNING* Recipients listed in the \*(lqDcc:\*(rq field receive no explicit indication that they have received a \*(lqblind copy\*(rq. This can cause blind recipients to inadvertently reply to all of the sighted recipients of the @@ -297,7 +281,7 @@ If .B \-filter .I filterfile is specified, then this copy is filtered -(re\-formatted) by +(re-formatted) by .B mhl prior to being sent to the blind recipients. Alternately, if you specify the @@ -332,7 +316,7 @@ switch must be enabled for this switch to have any effect. .PP If .B send -is re\-distributing a message (when invoked by +is re-distributing a message (when invoked by .BR dist ), then \*(lqResent\-\*(rq will be prepended to each of these fields: \*(lqFrom:\*(rq, \*(lqDate:\*(rq, and \*(lqMessage\-ID:\*(rq. @@ -344,12 +328,12 @@ is optional. .PP If a message with multiple \*(lqFrom:\*(rq addresses does -.B NOT +.I not include a \*(lqSender:\*(rq field but does include an \*(lqEnvelope\-From:\*(rq field, the \*(lqEnvelope\-From:\*(rq field will be used to construct a \*(lqSender:\*(rq field. .PP -When using SMTP for mail submission, the envelope\-from used for the SMTP +When using SMTP for mail submission, the envelope-from used for the SMTP transaction is derived from the \*(lqEnvelope\-From:\*(rq field. If no \*(lqEnvelope\-From:\*(rq field is present, the \*(lqSender:\*(rq field is used. If neither the \*(lqEnvelope\-From:\*(rq nor the @@ -374,6 +358,28 @@ appear to any non\-Bcc receivers of the message. That is, it will have the appended fields and field reformatting. The \*(lqFcc:\*(rq fields will be removed from all outgoing copies of the message. .PP +Beware that if an \*(lqFcc:\*(rq with one or more folders is present +but none of the folders exist, and the default +.I fileproc +and +.I postproc +are in use, then +.B refile +will prompt the user to create the folder(s) if +.B \-push +is not specified. If all responses are negative, or creation of each folder +fails, or +.B \-push +is specified, the message will not be copied to any folder and will be +removed by +.BR post . +With the default +.B refile +switches, the message draft will be renamed according to the specification +of its +.B \-nolink +switch. +.PP By using the .B \-width .I columns @@ -382,23 +388,33 @@ switch, the user can direct as to how long it should make header lines containing addresses. .PP The mail transport system default is provided in -.I %etcdir%/mts.conf -but can be overriiden here with the +.I %nmhetcdir%/mts.conf +but can be overridden here with the .B \-mts switch. .PP +If nmh is using as its mail transport system +.BR sendmail/pipe , +the +.B \-sendmail +switch can be used to override the default +.B sendmail +program. +.PP If nmh is using the SMTP MTA, the .B \-server and the .B \-port switches can be used to override the default mail server (defined by the -.I %etcdir%/mts.conf -.RI servers +.I %nmhetcdir%/mts.conf +.I servers entry). The .B \-snoop switch can be used to view the SMTP transaction. (Beware that the SMTP transaction may contain authentication information either in -plaintext or easily decoded base64.) +plaintext or easily decoded base64.) If +.B \-sasl \-saslmech xoauth2 +is used, the HTTP transaction is also shown. .PP If .B nmh @@ -411,28 +427,51 @@ the use of SASL authentication with the SMTP MTA. Depending on the SASL mechanism used, this may require an additional password prompt from the user (but the .I netrc -file can be used to store this password, as described in the -mh-profile(5) man page). The +file can be used to store this password, as described in +.IR mh-profile (5). +The .B \-saslmech switch can be used to select a particular SASL mechanism, and the .B \-user switch can be used to select a authorization userid to provide to SASL -other than the default. The credentials profile entry in the -mh_profile(5) man page describes the ways to supply a username and +other than the default. The credentials profile entry in +.IR mh\-profile (5) +describes the ways to supply a username and password. .PP If SASL authentication is successful, -.BR nmh +nmh will attempt to negotiate a security layer for session encryption. Encrypted data is labelled with `(encrypted)' and `(decrypted)' when viewing the SMTP transaction with the .B \-snoop -switch. The -.B \-saslmaxssf -switch can be used to select the maximum value of the Security Strength Factor. -This is an integer value and the exact meaning of this value depends on the -underlying SASL mechanism. A value of 0 disables encryption. +switch; see +.IR post (8)'s +description of +.B \-snoop +for its other features. +.PP +If +.B nmh +has been compiled with OAuth support, the +.B \-sasl +and +.B \-saslmech xoauth2 +switches will enable OAuth authentication. The +.B \-user +switch must be used, and the +.I username +must be an email address the user has for the service, which must +be specified with the +.B \-authservice +.I service +switch. Before using OAuth authentication, the user must authorize nmh by +running +.B mhlogin +and grant authorization to that account. See +.IR mhlogin (1) +for more details. .PP If .B nmh @@ -449,13 +488,32 @@ using the STARTTLS command. The will negotiate TLS immediately after the connection has taken place, before any SMTP commands are sent or received. Encrypted data is labelled with `(tls-encrypted)' and -`(tls-decrypted)' when viewing the SMTP transction with the +`(tls-decrypted)' when viewing the SMTP transaction with the .B \-snoop -switch. +switch; see +.IR post (8)'s +description of +.B \-snoop +for its other features. The .B \-notls switch will disable all attempts to negotiate TLS. .PP +If port 465 is specified and none of the TLS switches were enabled, +.B \-initialtls +will be implied if TLS support was compiled in. Though port 465 for +SMTPS (SMTP over SSL) was deregistered by IANA in 1998, it is still +used for that service. +.PP +When using TLS the default is to verify the remote certificate and SubjectName +against the local trusted certificate store. This can be controlled by +the +.B \-certverify +and +.B \-nocertverify +switches. See your OpenSSL documentation for more information on certificate +verification. +.PP The files specified by the profile entry \*(lqAliasfile:\*(rq and any additional alias files given by the .B \-alias @@ -467,11 +525,102 @@ can be named). See .IR mh\-alias (5) for more information. +.SS Selection based on sender address: sendfrom +One or more +.I sendfrom +profile components can be used to select a mail server address, mail server +port, or any other switch that can be supplied to +.BR post . +It works by first looking at the sender address and domain name in the +message draft, as described below. +It then looks for a corresponding profile entry, which contains the +.B post +switches. +To enable, add profile entries of the form: +.PP +.RS 5 +.RI sendfrom- "address/domain name" : " post switches" +.RE +.PP +The email address is extracted from the Envelope-From: header, if not blank, +the Sender: header, or the From: header line in the message draft. +Multiple profile entries, with different email addresses or domain names, are +supported. +This allows different switches to +.BR post , +such as -user, to be associated with different email addresses. +If a domain name is used, it matches all users in that domain. +.PP +Here is an example profile entry using OAuth for an account hosted by gmail: +.PP +.nf +.RS 5 +sendfrom-gmail_address@example.com: -sasl -saslmech xoauth2 +.RS 5 +-authservice gmail -tls -server smtp.gmail.com +-user gmail_login@example.com +.RE +.RE +.fi +.PP +(Indentation indicates a continued line, as supported in MH profiles.) +The username need not be the same as the sender address, which was extracted +from the appropriate header line as noted above. +.PP +Here are example profile entries that use an nmh credentials file: +.PP +.nf +.RS 5 +credentials: file:nmhcreds +sendfrom-sendgrid_address@example.com: -sasl -tls +.RS 5 +-server smtp.sendgrid.net +.RE +sendfrom-outbound.att.net: -sasl -initialtls +.RS 5 +-server outbound.att.net -port 465 +.RE +sendfrom-fastmail.com: -initialtls -sasl -saslmech LOGIN +.RS 5 +-server smtps-proxy.messagingengine.com -port 80 +.RE +.RE +.fi +.PP +where nmhcreds is in the user's nmh directory (from the Path profile component) +and contains: +.PP +.nf +.RS 5 +machine smtp.sendgrid.net +.RS 5 +login sendgrid_login@example.com +password ******** +.RE +machine outbound.att.net +.RS 5 +login att_login@example.com +password ******** +.RE +machine smtps-proxy.messagingengine.com +.RS 5 +login fastmail_login@example.com +password ******** +.RE +.RE +.fi +.PP +For more information on authentication to mail servers, see +.IR mhlogin (1) +for OAuth services, and +.IR mh-profile (5) +for login credentials. +.PP .SH FILES .fc ^ ~ .nf -.ta \w'%etcdir%/ExtraBigFileName 'u -^$HOME/\&.mh\(ruprofile~^The user profile +.ta \w'%nmhetcdir%/ExtraBigFileName 'u +^$HOME/.mh_profile~^The user profile .fi .SH "PROFILE COMPONENTS" .fc ^ ~ @@ -479,18 +628,23 @@ for more information. .ta 2.4i .ta \w'ExtraBigProfileName 'u ^Path:~^To determine the user's nmh directory -^Draft\-Folder:~^To find the default draft\-folder +^Draft\-Folder:~^To find the default draft-folder ^Aliasfile:~^For a default alias file ^Signature:~^To determine the user's mail signature ^mailproc:~^Program to post failure notices ^postproc:~^Program to post the message +^sendfrom-address:~^Switches to post for sender address +^sendfrom-domain:~^Switches to post for sender domain name .fi .SH "SEE ALSO" .IR comp (1), .IR dist (1), .IR file (1), .IR forw (1), +.IR mhbuild (1), .IR mhparam (1), +.IR mhlogin (1), +.IR refile (1), .IR repl (1), .IR whatnow (1), .IR mh\-alias (5), @@ -499,8 +653,8 @@ for more information. .IR post (8) .SH DEFAULTS .nf -.RB ` file "' defaults to /draft" -.RB ` \-alias "' defaults to %etcdir%/MailAliases" +.RB ` file "' defaults to /draft" +.RB ` \-alias "' defaults to %nmhetcdir%/MailAliases" .RB ` \-nodraftfolder ' .RB ` \-nofilter ' .RB ` \-format ' @@ -512,8 +666,7 @@ for more information. .RB ` \-noverbose ' .RB ` \-nowatch ' .RB ` "\-width\ 72" ' -.RB ` "\-attach\ Nmh-Attachment" ' -.RB ` "\-attachformat\ 1" ' +.RB ` \-certverify ' .fi .SH CONTEXT None