Prefer smtp.send_message over smtp.sendmail

This lets smtplib deal with choosing the right message formatting based on the
remote server's capabilities.
Mark our messages as Auto-Submitted
Drop auto-submitted replies

The current code doesn't drop auto-submitted replies, it only drops
auto-generated messages (that are not a direct reply to another message).
See [1].

[1]: https://tools.ietf.org/html/rfc3834#section-5.1

Closes: https://todo.sr.ht/~sircmpwn/lists.sr.ht/124
Add mailing list description to threads
Drop out-of-office replies
Don't split header fields

By default Python's policy has max_line_length=78. This is a good idea when
generating e-mails, however when forwarding them this may re-format long lines.
Because of this, DKIM signatures may get broken [1].

This commit changes max_line_length to 998, the RFC's hard limit.

Additionally, smtp.sendmail calls are replaced with smtp.send_message, which
leaves the formatting to smtplib. Previously email.policy.SMTPUTF8 was used,
which could result in raw UTF-8 being sent to servers which don't support

[1]: https://lists.sr.ht/~sircmpwn/sr.ht-discuss/%3C5eyQeHZnsPZb93CeySB5Z78iohHq9_ki7b8rpigjSL8PcrEpPXBViekRWAfua1L1XiP6-bKau7YRp1Rk9PyrjzD_BkiKKN_pkl6jVihvBf8%3D%40emersion.fr%3E#%3CftBrXTFwtU92zRoZnFxa6vMhBqHSdUO-l2ds0l4PA_OVhANM2ArVYMKr4WDaq4Yg4o7C3MtWPRg1QKxwXSADVJiDWocYC8wa2ylEoxoOJX4=@emersion.fr%3E
Send our own bounce emails instead of postfix
Allow admins to permit multipart emails with HTML
Import db into api/patches.py
Don't show message date if unset
Add search to API, sender timestamp criteria
Fix broken timestamps in previous migration
Add sender timestamp column to email table
Add Date & Message-ID to subscription confirmation
Fix weird mail addresses in dkim parser
Don't fail subsequent deliveries when one fails
Fix searching for non-patches
Add patchset search tools
Use text-muted for applied patches
Bump width of status label