gnus Gmail nnimap Emacs
Gnus'овский nnimap не умеет работать с несколькими аккаунтами на одном сервере. А так уж повелось, что у меня активно используется несколько гмыльников. Для себя я по кусочкам собрал такой выход из ситуации:
;; Настраиваем imap в конфиге Gnus'а.
(setq gnus-secondary-select-methods
'((nnimap "gmail1"
(nnimap-address "imap.gmail-alias1.com")
(nnimap-server-port 993)
(nnimap-stream ssl)
(nnimap-authinfo-file "~/.emacs.d/authinfo.gpg")
(nnir-search-engine imap))
(nnimap "gmail2"
(nnimap-address "imap.gmail-alias2.com")
(nnimap-server-port 993)
(nnimap-stream ssl)
(nnimap-authinfo-file "~/.emacs.d/authinfo.gpg"))))
В ~/.emacs.d/authinfo.gpg пишем следующие строчки:
machine imap.gmail-alias1.com login mylogin1@gmail.com password "mypassword1" port 993
machine imap.gmail-alias2.com login mylogin2@gmail.com password "mypassword2" port 993
Настройки для отправки сообщений. Воспользуемся ido для запроса у юзера, от кого будем отправлять сообщение.
(require 'smtpmail)
(defun my/private-gnus-prompt-address ()
(interactive)
;; Список, который будет выдаваться в запросе юзеру
(setq my/mails-list (list "mylogin1" "mylogin2"))
;; Запрашиваем у пользователя, от кого будем отправлять сообщение
(setq local-mail-address
(ido-completing-read
"From: "
my/mails-list nil
nil nil nil "mylogin1"))
(cond
((string= local-mail-address "mylogin1")
(setq message-send-mail-function 'smtpmail-send-it
user-mail-address "mylogin1@gmail.com"
user-full-name "Username"
smtpmail-default-smtp-server "smtp.gmail.com"
smtpmail-smtp-server "smtp.gmail.com"
smtpmail-smtp-service 587
smtpmail-starttls-credentials '(("smtp.gmail.com" 587 nil nil))
smtpmail-auth-credentials '(("smtp.gmail.com" 587 "mylogin1@gmail.com" "mypassword1"))))
((string= local-mail-address "mylogin2")
(setq message-send-mail-function 'smtpmail-send-it
user-mail-address "mylogin2@gmail.com"
user-full-name "Username"
smtpmail-default-smtp-server "smtp.gmail.com"
smtpmail-smtp-server "smtp.gmail.com"
smtpmail-smtp-service 587
smtpmail-starttls-credentials '(("smtp.gmail.com" 587 nil nil))
smtpmail-auth-credentials '(("smtp.gmail.com" 587 "mylogin2@gmail.com" "mypassword2"))))
(t
(message "Wrong field From: "))))
(add-hook 'message-send-hook 'my/private-gnus-prompt-address)
(setq
;; Убираем поле "From" при написании нового почтового сообщения
message-required-mail-headers
'(Subject Date (optional . In-Reply-To) Message-ID (optional . User-Agent))
Потом необходимо добавить соответствующие записи в файл /etc/hosts для новорожденных имён:
173.194.69.108 imap.gmail-alias1.com
173.194.69.108 imap.gmail-alias2.com
Айпишник лучше проверить для своего провайдера через 'nslookup imap.gmail.com'. Были один раз траблы из-за этого — уехал в другой край нашей великой и могучей страны, не смог проверить почту. Долго пытался понять, в чём же дело, плевался на тамошнего местного провайдера уже. Потом сообразил, разрешил имя — айпишник другой совсем. Сменил — всё заработало.