;;; Fully anonymize/randomize FQDN. (defun munge-message-id (orig-fun &rest args) "Make a random FQDN and User Agent" (let* ((nice-id (apply orig-fun args)) (nice-split (split-string nice-id "@")) (alpha "abcdefghijklmnopqrstuvwxyz") (domain '("com" "org" "net" "info" "us")) (part1 "") (part2 "") (part3 "") (part4 "") num0 num1 num2 num3) ;;; Temporary. Not in right place at all. (munge-user-agent) ;;; FQDN. ;;; Front half. (setq num0 (+ 4 (random 6))) (while (> num0 0) (setq num1 (random 25)) (setq part1 (concat part1 (substring alpha num1 (+ 1 num1)))) (setq num0 (- num0 1)) ) ;;; Back half. (setq num0 (+ 4 (random 6))) (while (> num0 0) (setq num2 (random 25)) (setq part2 (concat part2 (substring alpha num2 (+ 1 num2)))) (setq num0 (- num0 1)) ) ;;; Sub for 'fsf'. (setq num0 (+ 4 (random 6))) (while (> num0 0) (setq num3 (random 25)) (setq part3 (concat part3 (substring alpha num3 (+ 1 num3)))) (setq num0 (- num0 1)) ) ;;; TLD. (setq part4 (nth (random 4) domain)) ;;; Build the message-id. (concat (replace-regexp-in-string "fsf" part3 (nth 0 nice-split)) "@" part1 "." part2 "." part4 ">") ) ) (advice-add 'message-make-message-id :around #'munge-message-id) ;;; Semi-randomize User-Agent. (defun munge-user-agent () "Change user-agent to semi-random string" (let* ( (agents '("Mozilla" "Chrome" "Safari" "Brave" "Vivaldi")) (versions '("5.0" "5.5" "6.0" "6.5" "4.5"))) (setq gnus-user-agent (concat (nth (random 4) agents) "/" (nth (random 4) versions)))))