Restructure Gnus' MIME configuration
Let's group configuration related to MIME decoding and MIME encoding, to better understand what these variables are actually doing and to decrease maintanence complexity.
This commit is contained in:
parent
33394059ad
commit
57515fff34
162
init.el
162
init.el
@ -1604,6 +1604,13 @@
|
|||||||
gnus-treat-emphasize 'head
|
gnus-treat-emphasize 'head
|
||||||
gnus-treat-unsplit-urls t)
|
gnus-treat-unsplit-urls t)
|
||||||
|
|
||||||
|
(use-package gnus-art
|
||||||
|
:init (setq gnus-ignored-mime-types '("text/x-vcard")
|
||||||
|
gnus-inhibit-mime-unbuttonizing nil
|
||||||
|
gnus-buttonized-mime-types '("multipart/signed" "multipart/encrypted")
|
||||||
|
gnus-inhibit-images t
|
||||||
|
gnus-blocked-images ".*"))
|
||||||
|
|
||||||
;; Adaptive Scoring
|
;; Adaptive Scoring
|
||||||
|
|
||||||
(setq gnus-use-scoring t
|
(setq gnus-use-scoring t
|
||||||
@ -1639,24 +1646,84 @@
|
|||||||
emacs-d)
|
emacs-d)
|
||||||
gnus-refer-article-method 'current)
|
gnus-refer-article-method 'current)
|
||||||
|
|
||||||
;; MIME
|
;; MIME decoding
|
||||||
|
|
||||||
(setq gnus-ignored-mime-types '("text/x-vcard")
|
(use-package mm-decode
|
||||||
message-forward-as-mime t
|
:init (setq mm-text-html-renderer 'shr
|
||||||
gnus-inhibit-mime-unbuttonizing nil
|
mm-discouraged-alternatives '("text/richtext")
|
||||||
gnus-buttonized-mime-types '("multipart/signed" "multipart/encrypted")
|
mm-decrypt-option 'known
|
||||||
gnus-inhibit-images t
|
mm-verify-option 'known)
|
||||||
gnus-blocked-images "."
|
:config (progn
|
||||||
mm-text-html-renderer 'shr
|
(setq mm-automatic-display (-difference mm-automatic-display
|
||||||
mm-discouraged-alternatives '("text/richtext"))
|
'("text/enriched"
|
||||||
|
"text/richtext")))
|
||||||
|
|
||||||
;; Signing and Encryption
|
;; Automatically show PGP data inline
|
||||||
|
(add-to-list 'mm-inlined-types "application/pgp$")
|
||||||
|
(add-to-list 'mm-inline-media-tests
|
||||||
|
'("application/pgp$" mm-inline-text identity))
|
||||||
|
(add-to-list 'mm-automatic-display "application/pgp$")))
|
||||||
|
|
||||||
(setq mm-encrypt-option nil
|
(use-package mm-view
|
||||||
mm-sign-option nil
|
:config (progn
|
||||||
mm-decrypt-option 'known
|
;; Fix: mm-view does not seem to support verifying S/MIME messages
|
||||||
mm-verify-option 'known
|
;; using gpgsm, so we add a simple fix here
|
||||||
mml-smime-use 'epg
|
|
||||||
|
(defun mm-view-pkcs7-verify (handle)
|
||||||
|
(let ((verified nil))
|
||||||
|
(with-temp-buffer
|
||||||
|
(if (eq mml-smime-use 'epg)
|
||||||
|
;; Use gpgsm
|
||||||
|
(progn
|
||||||
|
(insert-buffer-substring (mm-handle-buffer handle))
|
||||||
|
(setq verified (epg-verify-string (epg-make-context 'CMS)
|
||||||
|
(base64-decode-string (buffer-string)))))
|
||||||
|
;; FIXME: insert valid signature
|
||||||
|
;; use openssl
|
||||||
|
(progn
|
||||||
|
(insert "MIME-Version: 1.0\n")
|
||||||
|
(mm-insert-headers "application/pkcs7-mime" "base64" "smime.p7m")
|
||||||
|
(insert-buffer-substring (mm-handle-buffer handle))
|
||||||
|
(setq verified (smime-verify-region (point-min) (point-max))))))
|
||||||
|
(goto-char (point-min))
|
||||||
|
(mm-insert-part handle)
|
||||||
|
(if (search-forward "Content-Type: " nil t)
|
||||||
|
(delete-region (point-min) (match-beginning 0)))
|
||||||
|
(goto-char (point-max))
|
||||||
|
(if (re-search-backward "--\r?\n?" nil t)
|
||||||
|
(delete-region (match-end 0) (point-max)))
|
||||||
|
(unless verified
|
||||||
|
(insert-buffer-substring smime-details-buffer)))
|
||||||
|
(goto-char (point-min))
|
||||||
|
(while (search-forward "\r\n" nil t)
|
||||||
|
(replace-match "\n"))
|
||||||
|
t)))
|
||||||
|
|
||||||
|
(setq message-forward-as-mime t)
|
||||||
|
|
||||||
|
;; MIME creation; signing, and encryption
|
||||||
|
|
||||||
|
(use-package mml
|
||||||
|
:config (progn
|
||||||
|
;; Move to end of message buffer before attaching a file
|
||||||
|
;; http://mbork.pl/2015-11-28_Fixing_mml-attach-file_using_advice
|
||||||
|
|
||||||
|
(defun db/mml-attach-file--go-to-eob (orig-fun &rest args)
|
||||||
|
"Go to the end of buffer before attaching files."
|
||||||
|
(save-excursion
|
||||||
|
(save-restriction
|
||||||
|
(widen)
|
||||||
|
(goto-char (point-max))
|
||||||
|
(apply orig-fun args))))
|
||||||
|
|
||||||
|
(advice-add 'mml-attach-file
|
||||||
|
:around #'db/mml-attach-file--go-to-eob)))
|
||||||
|
|
||||||
|
(use-package mm-encode
|
||||||
|
:init (setq mm-encrypt-option nil
|
||||||
|
mm-sign-option nil))
|
||||||
|
|
||||||
|
(setq mml-smime-use 'epg
|
||||||
;;mml2015-encrypt-to-self t
|
;;mml2015-encrypt-to-self t
|
||||||
mml2015-display-key-image nil
|
mml2015-display-key-image nil
|
||||||
gnus-message-replysign t
|
gnus-message-replysign t
|
||||||
@ -1786,71 +1853,10 @@
|
|||||||
(bind-key "C-<return>" #'db/gnus-summary-open-Link gnus-summary-mode-map)
|
(bind-key "C-<return>" #'db/gnus-summary-open-Link gnus-summary-mode-map)
|
||||||
(bind-key "C-<return>" #'db/gnus-summary-open-Link gnus-article-mode-map)))
|
(bind-key "C-<return>" #'db/gnus-summary-open-Link gnus-article-mode-map)))
|
||||||
|
|
||||||
(use-package mm-decode
|
|
||||||
:config (progn
|
|
||||||
(setq mm-automatic-display (-difference mm-automatic-display
|
|
||||||
'("text/enriched"
|
|
||||||
"text/richtext")))
|
|
||||||
|
|
||||||
;; Automatically show PGP data inline
|
;; Sending mail
|
||||||
(add-to-list 'mm-inlined-types "application/pgp$")
|
|
||||||
(add-to-list 'mm-inline-media-tests
|
|
||||||
'("application/pgp$" mm-inline-text identity))
|
|
||||||
(add-to-list 'mm-automatic-display "application/pgp$")))
|
|
||||||
|
|
||||||
(use-package mm-view
|
(setq message-send-mail-function #'db/smtpmail-send-it
|
||||||
:config (progn
|
|
||||||
;; Fix: mm-view does not seem to support verifying S/MIME messages
|
|
||||||
;; using gpgsm, so we add a simple fix here
|
|
||||||
|
|
||||||
(defun mm-view-pkcs7-verify (handle)
|
|
||||||
(let ((verified nil))
|
|
||||||
(with-temp-buffer
|
|
||||||
(if (eq mml-smime-use 'epg)
|
|
||||||
;; Use gpgsm
|
|
||||||
(progn
|
|
||||||
(insert-buffer-substring (mm-handle-buffer handle))
|
|
||||||
(setq verified (epg-verify-string (epg-make-context 'CMS)
|
|
||||||
(base64-decode-string (buffer-string)))))
|
|
||||||
;; FIXME: insert valid signature
|
|
||||||
;; use openssl
|
|
||||||
(progn
|
|
||||||
(insert "MIME-Version: 1.0\n")
|
|
||||||
(mm-insert-headers "application/pkcs7-mime" "base64" "smime.p7m")
|
|
||||||
(insert-buffer-substring (mm-handle-buffer handle))
|
|
||||||
(setq verified (smime-verify-region (point-min) (point-max))))))
|
|
||||||
(goto-char (point-min))
|
|
||||||
(mm-insert-part handle)
|
|
||||||
(if (search-forward "Content-Type: " nil t)
|
|
||||||
(delete-region (point-min) (match-beginning 0)))
|
|
||||||
(goto-char (point-max))
|
|
||||||
(if (re-search-backward "--\r?\n?" nil t)
|
|
||||||
(delete-region (match-end 0) (point-max)))
|
|
||||||
(unless verified
|
|
||||||
(insert-buffer-substring smime-details-buffer)))
|
|
||||||
(goto-char (point-min))
|
|
||||||
(while (search-forward "\r\n" nil t)
|
|
||||||
(replace-match "\n"))
|
|
||||||
t)))
|
|
||||||
|
|
||||||
(use-package mml
|
|
||||||
:config (progn
|
|
||||||
;; Move to end of message buffer before attaching a file
|
|
||||||
;; http://mbork.pl/2015-11-28_Fixing_mml-attach-file_using_advice
|
|
||||||
|
|
||||||
(defun db/mml-attach-file--go-to-eob (orig-fun &rest args)
|
|
||||||
"Go to the end of buffer before attaching files."
|
|
||||||
(save-excursion
|
|
||||||
(save-restriction
|
|
||||||
(widen)
|
|
||||||
(goto-char (point-max))
|
|
||||||
(apply orig-fun args))))
|
|
||||||
|
|
||||||
(advice-add 'mml-attach-file
|
|
||||||
:around #'db/mml-attach-file--go-to-eob)))
|
|
||||||
|
|
||||||
(setq notmuch-fcc-dirs nil
|
|
||||||
message-send-mail-function #'db/smtpmail-send-it
|
|
||||||
send-mail-function #'db/smtpmail-send-it
|
send-mail-function #'db/smtpmail-send-it
|
||||||
mail-user-agent 'gnus-user-agent)
|
mail-user-agent 'gnus-user-agent)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user