;;; -*-emacs-lisp-*- ;;; ;;; Local GNUS configuration -- distorted.org.uk version ;;; ;;; (c) 2014 Mark Wooding ;;; (setq auth-sources '("~/.authinfo.gpg")) ;;;-------------------------------------------------------------------------- ;;; How to send mail. (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. ;; Currently we assume an SSH tunnel. This will be fixed later. (setq gnus-select-method '(nntp "chiark-ssh-kludge" (nntp-open-connection-function nntp-open-authinfo-kludge) (nntp-address "tunnel.chiark.greenend.org.uk") (nntp-authinfo-generic "md5cookie1way mdw"))) ;;;-------------------------------------------------------------------------- ;;; Mail group configuration. ;; General splitting configuration. (setq nnimap-split-rule 'nnimap-split-fancy nnmail-split-methods 'nnmail-split-fancy nnimap-split-predicate "UNDELETED" nnimap-split-crosspost t nnmail-split-crosspost t nnmail-split-fancy-match-partial-words nil) ;; Automatic expiry for particular groups. (setq gnus-auto-expirable-newsgroups (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 '(("^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) (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 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 ,(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 "\\" "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")) ;;;-------------------------------------------------------------------------- ;;; 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 --------------------------------------------------