testing: invoke fake-sendmail the same way sendmail would be invoked

And change it to print its arguments verbatim rather than adding "-t"
to the output.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Pass "-oi" to sendmail by default

The default mail submission method is sendmail.  sendmail defaults to
quitting on a line containing only a ".".  Pass sendmail the -oi flag
to suppress that behavior.  This default can be overridden by
configuring "multimailhook.sendmailCommand" or by instantiating a
SendMailer instance directly.

Suggested-by: Daniel Shahaf
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
README: mention that sendmail is sought in two locations

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Mention multimailhook.sendmailCommand in Requirements section.

It's another way to deal with not having a sendmail program at one
of the two expected paths.
Make capitalization of mailing list config variables consistent.
Ask contributors to sign off their patches.
Implemented incremental send date

To force email clients to sort the messages in order (especially the
'summary' email first), we set the Date: header to the current date/time
plus a second for each sequential message.

This doesn't work in all email clients, notably Apple's Mail.app with
conversations enabled. I only got this working with the following settings:

 * no 'View -> Organize by Conversation',
 * enable View -> Columns -> Date Sent,
 * disable View -> Columns -> Date Received,
 * sort by 'Date Sent' instead of 'Date Received'.

But this will lose the functionality of collapsing/expanding conversations
(conversations are still grouped and marked as belonging together, but you
can't select/collapse/expand them, they are separate messages).

Mail.app has other problems, for example when the first mail received on the
final mail server (only tested IMAP) is -not- the summary email, they will
show up as two different 'conversations'. This is because emails -inside-
the conversation are always sorted on 'Date Received' (this is not
configurable) and this depends on the timestamp of the file at the IMAP
server (tested with postfix/dovecot). Mail.app behaves correctly (grouping
the emails together and sorting them in the right order) if you introduce a
real delay (tested: 1.1 second) so that the mail is actually delivered in
the right order. Caveat: if the emails are queued somewhere (> 1.1 second) and
delivered in a different order, the order might be incorrect in Mail.app.

Conclusion: it's -very- difficult to make this work correctly for Mail.app,
but other mail clients seem to work normally after this patch (tested:
Thunderbird, Mutt).

Signed-off-by: Michiel Holtkamp <git@elfstone.nl>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Express email times in the server's localtime.

And skip the step of converting back and forth to datetime structs.
The time has to be converted back to seconds since the epoch anyway to
be passed to formatdate(), so the old code was not more accurate than
the new.
Merge branch 'incremental-send-date'

Add explicit "Date:" headers to emails, with dates that increment by
one second per mail, in the hope of getting mail clients to show the
messages in the correct order.
If a mailing list setting is missing, just don't send the mail.

Instead of being really insistent that all mailing list values are
configured, just treat unset values as "don't send this kind of
email".  In any case, the user will see a warning that no emails were
sent, so an accidental misconfiguration shouldn't go unnoticed for
long.

However, if no email recipients have been configured at all, abort, as
this is a situation that is of no use to anybody.
Add X-Git-Host header for better filtering

For setups with a host with many different git repositories there
was no practical way to filter "all git-multimail mails from that
host". The new X-Git-Host Header supports it - it contains the
fqdn of the host that generated the mails.

Signed-off-by: Malte Swart <mswart@devtation.de>
Change fqdn into a COMPUTED_KEY.

This allows it to be overridden by derived classes.
Add classes to allow FQDN to be configured manually.
Merge branch 'x-git-host-header'

Add a header "X-Git-Host", containing the fully-qualified domain name
of the server, as another bit of data that can be used for filtering
emails.