X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/df38b85d7a913ae4f61169349a1d3ce6793fe13e..0630988acc7864483d8f6ed96f0ff1971ddb4db6:/dot/gnus-local.el.distorted diff --git a/dot/gnus-local.el.distorted b/dot/gnus-local.el.distorted index ed32911..5967b7b 100644 --- a/dot/gnus-local.el.distorted +++ b/dot/gnus-local.el.distorted @@ -5,17 +5,39 @@ ;;; (c) 2014 Mark Wooding ;;; +(setq auth-sources '("~/.authinfo.gpg")) + ;;;-------------------------------------------------------------------------- ;;; How to send mail. -(and nil - (setq smtpmail-smtp-server "mail.distorted.org.uk" - smtpmail-sendto-domain "distorted.org.uk" - smtpmail-smtp-service 587 - smtpmail-auth-credentials "~/.gnus.authinfo" - message-send-mail-function 'smtpmail-send-it - smtpmail-starttls-credentials - '(("mail.distorted.org.uk" 587 "" "")))) +(setq smtpmail-smtp-service 587 + smtpmail-auth-credentials "~/.authinfo.gpg") + +(setq mdw-send-mail-alist + `((distorted-smtp + (send-mail-function . smtpmail-send-it) + (smtpmail-smtp-server . "mail.distorted.org.uk") + (smtpmail-starttls-credentials + ("mail.distorted.org.uk" 587 nil nil))) + (chiark-smtp + (send-mail-function . smtpmail-send-it) + (smtpmail-smtp-server . "smtp.dovecot.chiark.greenend.org.uk") + (starttls-extra-arguments "--insecure") + (smtpmail-starttls-credentials + ("smtp.dovecot.chiark.greenend.org.uk" 587 nil nil))) + (gmail-smtp + (send-mail-function . smtpmail-send-it) + (smtpmail-smtp-server . "smtp.gmail.com") + (smtpmail-starttls-credentials + ("smtp.gmail.com" 587 nil nil)))) + mdw-guess-send-mail-alist + `((,(concat "@\\(" "\\(chiark\\|slimy\\|coriolis\\)" + "\\.greenend\\.org\\.uk" + "\\|" "evade\\.org\\.uk" + "\\|" "fyvzl\\.net" + "\\)$") . chiark-smtp) + ("@g\\(oogle\\)?mail\\.com$" . gmail-smtp)) + mdw-default-send-mail-method nil) ;;;-------------------------------------------------------------------------- ;;; News via chiark. @@ -28,35 +50,10 @@ (nntp-authinfo-generic "md5cookie1way mdw"))) ;;;-------------------------------------------------------------------------- -;;; Where we get mail from. - -;; Read mail on the IMAP server. -(setq gnus-secondary-select-methods - '((nnimap "distorted" - (nnimap-address "mail.distorted.org.uk") - (nnimap-stream tls) - (nnimap-authinfo-file "~/.gnus.authinfo")) - (nnimap "markw-distorted" - (nnimap-address "mail.distorted.org.uk") - (nnimap-stream tls) - (nnimap-authinfo-file "~/.gnus.authinfo.markw")) - (nnimap "google" - (nnimap-address "imap.gmail.com") - (nnimap-stream tls) - (nnimap-authinfo-file "~/.gnus.authinfo")))) - -;; Send sent mail back to me. -(setq gnus-message-archive-method "mail" - gnus-gcc-mark-as-read t - gnus-message-archive-group "nnimap+distorted:mail.sent") - -;;;-------------------------------------------------------------------------- ;;; Mail group configuration. ;; General splitting configuration. -(setq nnimap-split-inbox '("INBOX" "to.split") - nnimap-split-rule 'nnimap-split-fancy - nnimap-split-methods 'nnimap-split-fancy +(setq nnimap-split-rule 'nnimap-split-fancy nnmail-split-methods 'nnmail-split-fancy nnimap-split-predicate "UNDELETED" nnimap-split-crosspost t @@ -65,76 +62,199 @@ ;; Automatic expiry for particular groups. (setq gnus-auto-expirable-newsgroups - "^nnimap\\+distorted:\\(crap\\|spam\\|admin\\|lists\\|nag\\)\\..*") + (concat "^" + "\\(nnimap\\+[^:]+\\|nnvirtual\\):" + "\\(" "\\(admin\\|crap\\|lists\\|nag\\)\\." + "\\|" "spam\\.oubliette" + "\\)")) ;; My various email addresses. (setq message-alternative-emails bbdb-user-mail-names message-dont-reply-to-names message-alternative-emails) +;; Augment Gnus's built-in header-list abbreviations. +(require 'nnmail) +(setq nnmail-split-abbrev-alist + (mdw-uniquify-alist + `((to . ,(concat "to\\|cc\\|apparently-to\\|envelope-to\\|" + "resent-to\\|resent-cc")) + (any . ,(concat "from\\|sender\\|resent-from\\|" + "to\\|cc\\|apparently-to\\|envelope-to\\|" + "resent-to\\|resent-cc")) + ,@nnmail-split-abbrev-alist))) + +;; Find out about my `odin.gg' mappings. +(defvar mdw-odin-parse-regexp + (concat "^" + "\\S-+" "\\s-+" ; time limit + "\\(" "\\S-+" "\\)" "\\s-+" ; local part + "\\S-+" "\\s-+" ; recipient email address + "=" "\\(" "\\S-+" "\\)" ; mailbox tag + "\\(" "$" "\\|" "\\s-" "\\)")) + +(defvar mdw-odin-splits nil) +(defvar mdw-odin-sender-alist nil) + +(defun mdw-update-odin-info () + (let ((splits nil) (senders nil)) + (with-temp-buffer + (call-process "ssh" nil t nil + "stratocaster" "userv" "odin" "mail" "list") + (goto-char (point-min)) + (while (< (point) (point-max)) + (when (looking-at mdw-odin-parse-regexp) + (let ((local-part (match-string 1)) + (tag (match-string 2))) + (push `(to ,(format "%s@odin\\.gg" local-part) + ,(format "crap.%s" tag)) + splits) + (push (cons tag local-part) senders))) + (forward-line))) + (setq mdw-odin-splits (nreverse splits) + mdw-odin-sender-alist (nreverse senders)))) +(mdw-update-odin-info) + ;; Mail sent to `mdw-nospam-THING' should appear to come from this address. (setq gnus-posting-styles - '(((and (string-match "^nnimap\\+distorted:crap\\.\\(.*\\)$" - gnus-newsgroup-name) - (setq mdw-from-address - (replace-match "mdw-nospam-\\1@distorted.org.uk" - nil nil gnus-newsgroup-name))) - ("From" mdw-from-address)))) + '(("^nnimap\\+distorted:crap\\." + (address (let* ((mailbox (substring gnus-newsgroup-name + (match-end 0))) + (entry (assoc mailbox mdw-odin-sender-alist))) + (if entry (concat (cdr entry) "@odin.gg") + (concat "mdw-nospam-" mailbox "@distorted.org.uk"))))) + ("^nnimap\\+[^:]+-chiark:" + ("X-mdw-Send-Mail" "chiark-smtp")) + ("^nnimap\\+google:" + (address "distorted.mdw@gmail.com") + ("X-mdw-Send-Mail" "gmail-smtp")))) ;; The actual splitting rules. (setq nnmail-split-fancy - '(| + `(| ;; Administrative boxes. - (to "\\(root\\|postgres\\|ca\\|noc\\)@" "admin.misc" t) - (to "\\(jukebox\\|nobody\\|darchive\\)@" "admin.misc" t) - (to "\\(hostmaster\\)@" "admin.dns" t) - (to "\\(news\\|newsmaster\\|usenet\\)@" "admin.news" t) - (to "\\(postmaster\\|spamd\\|mailer-daemon\\)@" "admin.mail" t) - (to "\\(irc\\|blight\\|ircbot\\)@" "admin.irc" t) - (to "\\(www\\|webmaster\\|mtos\\)@" "admin.web" t) - (to "\\(ftp\\|ftpadmin\\|mirror\\)@" "admin.ftp" t) - (to "\\(abuse\\|security\\)@" "admin.keep" t) + (to "\\<\\(root\\|postgres\\|ca\\|noc\\)@" "admin.misc" t) + (to "\\<\\(jukebox\\|nobody\\|darchive\\)@" "admin.misc" t) + (to "\\<\\(hostmaster\\)@" "admin.dns" t) + (to "\\<\\(news\\|newsmaster\\|usenet\\)@" "admin.news" t) + (to "\\<\\(postmaster\\|spamd\\|mailer-daemon\\)@" "admin.mail" t) + (to "\\<\\(irc\\|blight\\|ircbot\\)@" "admin.irc" t) + (to "\\<\\(www\\|webmaster\\|mtos\\)@" "admin.web" t) + (to "\\<\\(ftp\\|ftpadmin\\|mirror\\)@" "admin.ftp" t) + (to "\\\<\\(abuse\\|security\\)@" "admin.keep" t) (from "cron daemon" "admin.misc") (from "uucp@distorted\\.org\\.uk" "admin.uucp") (from "darchive@.*\\.distorted\\.org\\.uk" "admin.misc") + (from "support@aa\\.net\\.uk" "admin.aaisp") (from "bugs@distorted\\.org\\.uk" "admin.bugs") + (from "darchive@distorted\\.org\\.uk" "admin.darchive") - ;; Colo provider. + ;; Colo and network provider. (from "\\(accounts\\|support\\)@jump\\.net\\.uk" "keep.colo") + (from "\\(accounts\\|support\\)@aa\\.net\\.uk" "keep.aaisp") ;; Mailing lists, not split out earlier. (to "python-list@python\\.org" "lists.python") - (to "jump-announce@jump\\.net\\.uk" "lists.jump-announce") + (to ,(concat "\\(jump-\\(announce\\|discuss\\)\\)@" + "\\(lists\\.\\)?" "jump\\.net\\.uk") + "lists.\\1") + (to "cambridgecryptowhiskyclub@gmail\\.com" + "lists.cambridge-crypto-whisky") + (from ,(concat "@" "\\(" "liberty-human-rights" + "\\|" "libertyhumanrights" + "\\|" "libertymail" + "\\)" "\\.org\\.uk" "\\>") + "lists.liberty" t) + (from "@openrightsgroup\\.org\\>" "lists.org" t) + (from "@warwick\\.ac\\.uk\\>" "lists.warwick-uni" t) + (to "chiark-\\(motd\\|announce\\)@chiark\\.greenend\\.org\\.uk" + "lists.chiark-announce") + (any "clive-cambridge-gamers@nsict\\.org" "lists.nsict-games") ;; Per-sender addresses. - (to "mdw-nospam-justgviing@" "crap.justgiving" t) - (to "mdw-nospam-\\([^@]+\\)@" "crap.\\1" t) - (to "mdw-nopspam-\\([^@]+\\)@" "crap.\\1" t) + (to "\\" "crap.lovefilm" t) + (from "@\\(.*\\.\\)?amazon\\." "crap.amazon" t) + (from "@cineworldmail\\.com\\>" "crap.cineworld" t) + (from "@picturehouses\\.co\\.uk\\>" "crap.picturehouse" t) + (from "@nationwide" "crap.nationwide" t) + (from "nationwide@securesuiteemail\\.com\\>" "crap.nationwide" t) + (from "@\\(.*\\.\\)?spotify\\(mail\\)?\\.com\\>" "crap.spotify" t) + (from "@action\\.openrightsgroup\\.org\\>" "crap.org" t) + (from "unlimited@cineworld\\.com\\>" "crap.cineworld" t) + (from "@tshirthell\\.com\\>" "crap.tshirt-hell" t) + (from "campaigns@jolla\\.com\\>" "crap.jolla" t) + (from "@thomann\\.de\\>" "crap.thomann" t) + (from "@wikimedia\\.org\\>" "crap.wikimedia" t) + (from "@\\(.*\\.\\)?gandi\\.net\\>" "crap.gandi" t) + (from "@mythic-beasts\\.com\\>" "crap.mythic-beasts" t) + (from "@accounts\\.google\\.com\\>" "crap.google" t) ;; Default. - "mail.misc") - nnimap-split-fancy nnmail-split-fancy) + "mail.misc")) + +;;;-------------------------------------------------------------------------- +;;; Where we get mail from. + +;; Read mail on the IMAP server. +(setq gnus-secondary-select-methods + `((nnimap "distorted" + (nnimap-address "mail.distorted.org.uk") + (nnimap-user "mdw") + (nnimap-stream starttls) + (nnimap-inbox ("INBOX" "to.split")) + (nnimap-split-methods nnimap-split-fancy) + (nnimap-split-fancy ,nnmail-split-fancy) + (nnimap-unsplittable-articles (%Deleted))) + (nnimap "markw-distorted" + (nnimap-address "mail.distorted.org.uk") + (nnimap-user "markw") + (nnimap-stream starttls) + (nnimap-inbox ("INBOX" "to.split")) + (nnimap-split-methods nnimap-split-fancy) + (nnimap-split-fancy ,nnmail-split-fancy) + (nnimap-unsplittable-articles (%Deleted))) + (nnimap "mdw-chiark" + (nnimap-address "imap.dovecot.chiark.greenend.org.uk") + (nnimap-user "mdw") + (nnimap-stream starttls) + (nnimap-inbox ("INBOX" "to.split")) + (nnimap-split-methods nnimap-split-fancy) + (nnimap-split-fancy ,nnmail-split-fancy) + (nnimap-unsplittable-articles (%Deleted))) + (nnimap "mwooding-chiark" + (nnimap-address "imap.dovecot.chiark.greenend.org.uk") + (nnimap-user "mwooding") + (nnimap-stream starttls) + (nnimap-inbox ("INBOX" "to.split")) + (nnimap-split-methods nnimap-split-fancy) + (nnimap-split-fancy ,nnmail-split-fancy) + (nnimap-unsplittable-articles (%Deleted))) + (nnimap "google" + (nnimap-address "imap.gmail.com") + (nnimap-stream tls) + (nnimap-inbox ("INBOX" "to.split")) + (nnimap-split-methods nnimap-split-fancy) + (nnimap-split-fancy ,nnmail-split-fancy) + (nnimap-unsplittable-articles (%Deleted))))) + +;; Send sent mail back to me. +(setq gnus-message-archive-method "mail" + gnus-gcc-mark-as-read t + gnus-message-archive-group "nnimap+distorted:mail.sent") ;;;----- That's all, folks --------------------------------------------------