about summary refs log tree commit homepage
DateCommit message (Collapse)
2016-06-17TODO: remove cookies for colors
It would be too much of a burden for caching system when user-supplied CSS is more powerful.
2016-06-17scripts/dc-dlvr: ClamAV support via clamdscan
SpamAssassin often misses messages which contain viruses, so ClamAV should fill that gap nicely.
2016-06-17scripts/dc-dlvr: remove catchall account
Unfortunately, people screw up addresses enough and for this to be a real problem.
2016-06-17scripts/dc-dlvr: update copyright
2016-06-17watch: introduce watch directive
This will allow users to run importers off existing mail accounts where they may not have access to run -mda. Currently, we only support Maildirs, but IMAP ought to be doable.
2016-06-17filter: split out scrub method from delivery
We will scrub for importing archives, so ensure it is usable outside of the delivery routine.
2016-06-17searchidx: disable Email::MIME::ContentType::STRICT_PARAMS
Disable this since we handle imperfect data from an imperfect world.
2016-06-17msg_iter: support read-only elements
Apparently, it's possible to have read-only bodies in Email::MIME objects. Haven't gotten a chance to reliably reproduce it, though...
2016-06-17doc: update design_www.txt for reply view
Followup-to: 1365e185d817cdc2de04968c37f597d92226a13b ("view: inline message reply into message view")
2016-06-17README: various updates
We no longer scrub content, and instead reject things by default. Further reduce mentions of ssoma and minor formatting tweaks.
2016-06-15INSTALL: recommend Debian 8.5 for Xapian corruption fix
Debian 8.5 is out and fixes the Xapian corruption bug, so no need to recommend jessie-backports anymore. ref: https://www.debian.org/News/2016/20160604
2016-06-15unsubscribe: archive_url may be undefined
We'll show a nasty warning in the UI instead of triggering a perl warning about an undefined variable.
2016-06-15inbox: allow undef return value for base_url
It should be possible to serve the contents of a public-inbox over NNTP but not HTTP.
2016-06-15MANIFEST: update
Oops, maybe this could be auto-maintained somehow...
2016-06-15mda: hook up new filter functionality
This removes the Email::Filter dependency as well as the signature-breaking scrubber code. We now prefer to reject unacceptable messages and grudgingly (and blindly) mirror messages we're not the primary endpoint for.
2016-06-15emergency: implement new emergency Maildir delivery
This is transactional and hopefully safer in case we hit SIGSEGV or SIGKILL during processing, as the tmp/ copy will remain on the FS even if DESTROY/END handlers are not called.
2016-06-15filter: begin work on a new filter API
This filter API should be independent of Email::Filter and hopefully less intrusive to long running processes.
2016-06-15mda: precheck no longer depends on Email::Filter
Email::Filter doesn't offer any functionality we need, here; and our dependency on Email::Filter will gradually be removed since it (and Email::LocalDelivery) seem abandoned and we can have more-fine-grained control by rolling our own Maildir delivery which can work transactionally.
2016-06-15t/mda: use only Maildir for testing
Remove mbox tests since mbox is unreliable due to raciness and incompatible implementations. We will drop support for mbox emergency destinations, soon.
2016-06-15t/mda.t: remove senseless use of Email::Filter
Totally unnecessary...
2016-06-15learn: remove IPC::Run dependency
We'll be relying on our spawn implementation, for now; since it'll be consistent with the rest of our code and can optionally take advantage of vfork.
2016-06-15t/feed.t: make IPC::Run usage optional
Since ssoma is optional, here, IPC::Run shall also be optional. (And it may be removed entirely in the future).
2016-06-15drop dependency on File::Path::Expand
We still pull it in via Email::LocalDelivery, but that dependency will go away, soon.
2016-06-14nntp: do not double-encode UTF-8 body
Or whatever the appropriate Perl terminology, is... And we will need to do something appropriate for other encodings, too. I still barely understand Perl Unicode despite attempting to understand the docs over the years..
2016-06-13doc: systemd examples should only kill one process
For our daemons, killing only the master process is enough. Killing the entire control group (as done by default in systemd) may cause subprocesses such as git to shut down unexpectedly. Having systemd kill workers directly will also cause an immediate shutdown since the master would've already signaled the workers; and workers will die after two shutdown requests.
2016-06-13view: msg_html uses getline body to reduce latency
We need to ensure we show the message body ASAP since the thread generation via Xapian could take a while and maybe even raise an exception or crash.
2016-06-13examples: systemd socket and service definitions for daemons
Since our daemons are built to take advantage of socket activation, provide example files to allow systems administrators to hit the ground running with systemd. Example init files for other systems greatly appreciated.
2016-06-11daemon: reset unused signal handlers to default in child
They're effectively noops anyways, and we don't want to be holding a reference to the read end of the parent pipe.
2016-06-10unsubscribe: HTML encode undecryptable username
Otherwise, URLs can be crafted to inject HTML.
2016-06-09doc: update links to HTTPS sites in INSTALL and README
Thanks to Let's Encrypt and getssl, we can afford to have HTTPS for our own hosting, and www.gnu.org has been accessible over HTTPS for a long while. While we're at it, update the copyright years, too.
2016-06-07unsubscribe: fix off-by-one error
Oops, pesky users of single-character email addresses!
2016-06-07unsubscribe.psgi: disable confirmation
This makes unsubscribing easier and frictionless.
2016-06-07unsubscribe.milter: implement archive blacklist
We don't want people following links from archivers and breaking archival.
2016-06-07Merge branch 'unsubscribe'
* unsubscribe: unsubscribe.milter: use default postfork dispatcher unsubscribe: prevent decrypt from showing random crap examples/unsubscribe-psgi@.service: disable worker processes unsubscribe: bad URL fixup unsubscribe: get off mah lawn^H^H^Hist
2016-06-07view: be sure reply text describes plain-text
While we may end up mirroring lists which allow HTML mail, encourage plain-text for compatibility since all current inboxes we host are text-only.
2016-06-07view: remove trailing whitespace from reply command
Oops, needless waste of space.
2016-06-07view: escape From name properly for title
Oops :x Add an additional test for live data for any unprintable characters, too, since this could be a dangerous source of HTML injection.
2016-06-05view: inline message reply into message view
This should reduce link following for replies and improve visibility. This should also reduce cache overhead/footprint for crawlers.
2016-06-02www: force two element key-value pairs in query
Oops, this quiets down a warning seen in logs.
2016-05-30use utf8::{encode,decode} for in-place transforms
No need to duplicate the string when transforming it; learned from studying SpamAssassin 3.4.1
2016-05-30http: yield body->getline running time
We cannot let a client monopolize the single-threaded server even if it can drain the socket buffer faster than we can emit data. While we're at it, acknowledge the this behavior (which happens naturally) in httpd/async. The same idea is present in NNTP for the long_response code. This is the HTTP followup to: commit 0d0fde0bff97 ("nntp: introduce long response API for streaming") commit 79d8bfedcdd2 ("nntp: avoid signals for long responses")
2016-05-30script/*{mda,learn}: no strict params for Email::MIME::ContentType
User input is imperfect, do not pollute our mail logs with warnings we cannot fix. This is documented in the Email::MIME::ContentType manpage so it should remain supported.
2016-05-30www: remove a few more Plack::Request dependencies
Still a work in progress, but SearchView no longer depends on Plack::Request at all and Feed is getting there. We now parse all query parameters up front, but we may do that lazily again in the future.
2016-05-30www: remove gratuitous use of Plack::Request methods
Accessing $env directly is faster and we will eventually remove all Plack::Request dependencies.
2016-05-30git-http-backend: remove dependency on Plack::Request
Plack::Request is unnecessary overhead for this given the strictness of git-http-backend. Furthermore, having to make commit 311c2adc8c63 ("avoid Plack::Request parsing body") to avoid tempfiles should not have been necessary.
2016-05-29nntp: fix for missing articles/bodies/heads
Oops, we totally forgot to automate testing for this :x
2016-05-29inbox: drop references ASAP for search and msgmap
We can't leave them lingering in the parent process at all due to the risk of corruption with multiple processes.
2016-05-29searchmsg: all timestamps stored in Xapian are UTC
We cannot have strftime using the local timezone for %z. This fixes output when a server is not running UTC.
2016-05-29INSTALL: note Debian bug #808610 corruption
Ugh, this is a nasty corruption bug and I can't recommend this project for Debian 8.0 users without documenting this.
2016-05-29txt2pre: remove CGI.pm dependency
It's no longer a part of the stock Perl distribution, and we don't need a whole module for just one function.