Работаем с почтой через Emacs и Wanderlust: несколько аккаунтов

от автора

    Пришло таки время для второй статьи о почтовом клиенте Wanderlust, работающим под Emacs. Сегодня мы попробуем настроить его для работы с почтой из нескольких разных почтовых ящиков, доступ к которым производится как по IMAP, так и по POP3 протоколу. Основы работы с Wanderlust описаны тут.

    Перво-наперво небольшое введение в логику работы Wanderlust — почтовых ящиков как единиц конфигурации в клиенте нет, зато есть папки. В простейшем случае папка может являться аналогом почтового ящика, как например в Thunderbird. Обычно в рамках одного почтового ящика мы имеем несколько основных папок — Входящие, Черновики, Спам, Отправленные. В Wanderlust их можно сгруппировать в одну категорию — и мы получим тот самый почтовый ящик, к которому привыкли в Thunderbird.

    Для того чтобы настроить список почтовых ящиков Wanderlust использует файл .folders, пребывая в святой уверенности что никакая другая программа не будет использовать для своих нужд файл с таким же именем. Файл этот хранится в вашей домашней директории. Вот пример содержимого файла .folders для трех учетных записей — IMAP и POP3:

# группа папок, изображающая почтовый ящик на gmail.com some_test@gmail.com {     %INBOX:some_test/clear@imap.gmail.com:993!                "Входящие"     %[Gmail]/Черновики:some_test/clear@imap.gmail.com:993!    "Черновики"     %[Gmail]/Корзина:some_test/clear@imap.gmail.com:993!      "Корзина"     %[Gmail]/Отправленные:some_test/clear@imap.gmail.com:993! "Отправленные" # формат строки такой: # % - значит что папка в формате IMAP # INBOX или [Gmail]/Черновики - имя папки на IMAP сервере # : - разделитель # some_test - имя пользователя для авторизации # / - разделитель # clear - тип авторизации, для IMAP почти всегда это значение # @ - разделитель # imap.gmail.com:993 - сервер и порт # ! - означает что при подключении к серверу нужно использовать SSL, если !!, то TLS # "Входящие" - имя папки которое будет отображаться в Wanderlust }  # тоже самое что и в предыдущей группе - меняются только имена IMAP папок. # кажется каждый почтовый сервис использует свою схему именования, и вам таки придется # выяснить как называются папки на вашем rambler_test@rambler.ru {     %INBOX:rambler_test/clear@imap.rambler.ru:993!    "Входящие"     %DraftBox:rambler_test/clear@imap.rambler.ru:993! "Черновики"     %SentBox:rambler_test/clear@imap.rambler.ru:993!  "Отправленные"     %Spam:rambler_test/clear@imap.rambler.ru:993!     "Спам"     %Trash:rambler_test/clear@imap.rambler.ru:993!    "Корзина" }  # теперь настроим POP3 папку # к сожалению по POP3 возможен доступ только ко входящим сообщениям # забудьте о том что у вас там имеется в остальных папках # или переместите содержимое других папок во "Входящие" в веб-интерфейсе mail_ru_test@mail.ru {     &mail_ru_test/user@pop.mail.ru:995! "Входящие" # & - значит что папка в формате POP3 # mail_ru_test - имя пользователя # / - разделитель # user - тип авторизации для POP3 # @ - разделитель # pop.mail.ru:995 - сервер и порт # ! - использовать SSL } 

    Gmail использует русские имена папок IMAP, что Wanderlust не поддерживает по умолчанию, поэтому чтобы получать почту из них вам придется добавить в свой файл .emacs следующее:

(setq elmo-imap4-use-modified-utf7 t) 

    Между прочим пакет wl-beta из состава дебиан содержит баг из-за которого загрузка почты из POP3 папки вешает Wanderlust намертво. Так что, возможно вам придется установить более свежую версию с помощью el-get. Хорошая статья, описывающая как его настроить находится тут.

    Теперь можете запустить новый экземпляр Emacs, нажать M-x wl и ввести пароли для ваших почтовых ящиков. Чтобы пароли не нужно было каждый раз вводить при запуске Wanderlust, после того как вы введете их все, нажмите A-x elmo-passwd-alist-save.

    Теперь вы можете читать почту, но пока только читать — ни писать письма ни даже удалять их вы не можете, а посему давайте попробуем настроить и этот столь желанный функционал. Вот что нужно добавить в файл .emacs, чтобы получить полноценный почтовый клиент:

 ;; список правил для удаления писем - тут вы указываете какую папку использовать для ;; удаления сообщений в каждом ящике. Правила срабатывают по регулярному выражению,  ;; применяемому к имени папки, в которой вы сейчас находитесь. Например папка для входящих ;; сообщений %INBOX:some_test/clear@imap.gmail.com:993! подпадает под регулярное выражение ;; "^%.*some_test", и сообщения удаленные из нее будут перемещаться в папку ;; [Gmail]/Корзина:some_test/clear@imap.gmail.com:993! (setq wl-dispose-folder-alist       '(         ("^%.*some_test" . "%[Gmail]/Корзина:some_test/clear@imap.gmail.com:993!")         ("^%.*rambler_test" . "%Trash:rambler_test/clear@imap.rambler.ru:993!")         ))  ;; список почтовых адресов, с которых вы планируете отправлять письма (setq wl-user-mail-address-list (quote ("some_test@gmail.com" "rambler_test@rambler.ru" "mail_ru_test@mail.ru"))) ;; чтобы не выдавало ошибку при старте из-за того, что smtp сервер по умолчанию не определен сразу (setq wl-insert-message-id nil)  ;; чтобы при создании нового сообщения отправитель подставлялся в ;; зависимости от того в какой папке вы сейчас находитесь (add-hook 'wl-mail-setup-hook 'wl-draft-config-exec) (remove-hook 'wl-draft-send-hook 'wl-draft-config-exec)  ;; указываем что выбор SMTP сервера для отправки должен осуществляться в зависимости от правил (setq wl-draft-config-matchone t)  ;; и вот эти правила и настройки применяющиеся в случае срабатывания одного из них  (setq wl-draft-config-alist       '(         ;; some_test@gmail.com         (          (string-match "some_test" wl-draft-parent-folder)          (wl-message-id-domain . "some_test@gmail.com")          (wl-from . "some_test ")          ("From" . "some_test@gmail.com")          (wl-smtp-posting-server . "smtp.gmail.com")          (wl-smtp-connection-type . 'starttls)          (wl-smtp-posting-port . 587)          (wl-smtp-authenticate-type . "plain")          (wl-smtp-posting-user . "some_test")          (wl-local-domain . "smtp.gmail.com")          )         ;; rambler_test@rambler.ru         (          (string-match "rambler_test" wl-draft-parent-folder)          (wl-message-id-domain . "rambler_test@rambler.ru")          (wl-from . "rambler_test ")          ("From" . "rambler_test@rambler.ru")          (wl-smtp-posting-server . "smtp.rambler.ru")          (wl-smtp-connection-type . 'starttls)          (wl-smtp-posting-port . 587)          (wl-smtp-authenticate-type . "plain")          (wl-smtp-posting-user . "rambler_test")          (wl-local-domain . "smtp.rambler.ru")          )         ;; mail_ru@mail.ru         (          (string-match "mail_ru" wl-draft-parent-folder)          (wl-message-id-domain . "mail_ru@mail.ru")          (wl-from . "mail_ru ")          ("From" . "mail_ru@mail.ru")          (wl-smtp-posting-server . "smtp.mail.ru")          (wl-smtp-connection-type . 'starttls)          (wl-smtp-posting-port . 587)          (wl-smtp-authenticate-type . "plain")          (wl-smtp-posting-user . "mail_ru")          (wl-local-domain . "smtp.mail.ru")          ))) 

    На всякий случай проверьте имена серверов и способы аутентификации. Узнать эту информацию обычно можно в веб-интерфейсе к вашему почтовому сервису. Более того, чтобы не загрязнять файл .emacs, поддерживает чтение настроек при запуске из файла .wl — он так же как .folders должен находиться в вашей домашней директории. И в завершение — немного подправим внешний вид, чтобы получить что-то похожее на скриншот в начале статьи:

(setq   ;; чтобы интерфейсы был как у Thunderbird - слева панель папок,  ;; справа список писем и прсомотр текущего сообшения  wl-stay-folder-window t   wl-folder-window-width 40   ;; чтобы при просмотре сообщения не видеть слишком много ненужных полей  wl-message-ignored-field-list '("^.*:")  wl-message-visible-field-list   '("^\\(To\\|Cc\\):"     "^Subject:"     "^\\(From\\|Reply-To\\):"     "^Organization:"     "^Message-Id:"     "^\\(Posted\\|Date\\):"     )   wl-message-sort-field-list   '("^From"     "^Organization:"     "^X-Attribution:"      "^Subject"      "^Date"      "^To"      "^Cc")) 

ссылка на оригинал статьи http://habrahabr.ru/post/192460/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *