/Mail/Mutt/TwoAccounts: различия между версиями
Freuser (обсуждение | вклад) (Редактирование, добавление своих конфигов) |
Freuser (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
= Настройка почтовой программы '''mutt''' на работу с несколькими аккаунтами и независимыми настройками. = | = Настройка почтовой программы '''mutt''' на работу с несколькими аккаунтами и независимыми настройками. = | ||
Возьмем связку из {{cmd|fetchmail}} (это тот,кто будет ловить почту), {{cmd|procmail}} (разгребать пришедшую почту и складывать куда нам надо и как надо) , для отправки {{cmd|msmtp}}, ну и сам {{cmd|mutt}}. | Возьмем связку из {{cmd|fetchmail}} (это тот,кто будет ловить почту), {{cmd|procmail}} (разгребать пришедшую почту и складывать куда нам надо и как надо) , для отправки {{cmd|msmtp}}, ну и сам {{cmd|mutt}}. | ||
Надо сказать, что все нижеприведенное умеет и сам {{cmd|mutt}}, кроме сортировки почты, но мы рассматриваем сложный случай, когда его функциональности недостаточно. | |||
Итак - приступим. | Итак - приступим. | ||
==настройка fetchmail== | ==настройка fetchmail== | ||
Строка 12: | Строка 11: | ||
poll pop.mail.ru user "supermailuser" keep password "SUperPaSSWord" | poll pop.mail.ru user "supermailuser" keep password "SUperPaSSWord" | ||
где ''gmailuser@gmail.com'' и ''supermailuser'' -имена пользователей (логин) для авторизации на почтовом сервере, ''localuser'' - имя локального пользователя, под которым вы будете читать почту (опция ''is "localuser"'' необязательна, все равно почту по почтовым ящикам пользователей рассовывает {{cmd|procmail}}, если у него хватает прав доступа, конечно), ''SuPeRpArol'' и ''SUperPaSSWord'' - пароли для почтового сервера, ''pop.gmail.com'' и ''pop.mail.ru'' - адрес почтового сервера. | где ''gmailuser@gmail.com'' и ''supermailuser'' -имена пользователей (логин) для авторизации на почтовом сервере, ''localuser'' - имя локального пользователя, под которым вы будете читать почту (опция ''is "localuser"'' необязательна, все равно почту по почтовым ящикам пользователей рассовывает {{cmd|procmail}}, если у него хватает прав доступа, конечно), ''SuPeRpArol'' и ''SUperPaSSWord'' - пароли для почтового сервера, ''pop.gmail.com'' и ''pop.mail.ru'' - адрес почтового сервера. <br> | ||
Опция ''proto'' означает тип соединения, в данном случае ''pop3''. | Опция ''proto'' означает тип соединения, в данном случае ''pop3''.<br> | ||
Опция ''timeout'' выставляет таймаут для соединения, по истечении этого времени соединение считается потерянным. | Опция ''timeout'' выставляет таймаут для соединения, по истечении этого времени соединение считается потерянным.<br> | ||
Опция ''tracepolls'' указывает {{cmd|fetchmail}} дописывать в заголовки каждого письма еще один ''Received'' с информацией о дате и пути скачивания письма (бывает | Опция ''tracepolls'' указывает {{cmd|fetchmail}} дописывать в заголовки каждого письма еще один ''Received'' с информацией о дате и пути скачивания письма (бывает, что это важно).<br> | ||
Опция ''mda'' указывает передавать полученные письма следующей программе, в данном случае сортировшику почты {{cmd|procmail}} с опциями | Опция ''mda'' указывает передавать полученные письма следующей программе, в данном случае сортировшику почты {{cmd|procmail}} с опциями ''-t'' — не отбрасывать почту при невозможности доставки (нет хуже отправленного и потерянного письма) и ''%T'' — вместо нее подставляется локальный пользователь, которому следует положить данное письмо в ящик.<br> | ||
Опция ''fetchlimit'' указывает на необходимость реконнекта после получения 20 писем с сервера. Необходимо для медленных и неустойчивых каналов, чтобы не качать письма по несколько раз при обрыве очереди. | Опция ''fetchlimit'' указывает на необходимость реконнекта после получения 20 писем с сервера. Необходимо для медленных и неустойчивых каналов, чтобы не качать письма по несколько раз при обрыве очереди.<br> | ||
Опция ''limit'' предписывает отказывать в получении писем размером более указанного (в байтах). | Опция ''limit'' предписывает отказывать в получении писем размером более указанного (в байтах).<br> | ||
Опция ''keep'' означает - не удалять письма с почтового сервера после получения. | Опция ''keep'' означает - не удалять письма с почтового сервера после получения.<br> | ||
Опция ''ssl'' требуется для Google/mail, означает безопасное соединение с шифрованием через порт 995 (напомню, обычный почтовый трафик не зашифрован). Gmail требует эту опцию, на остальных серверах включать по желанию и поддержке сервером. | Опция ''ssl'' требуется для Google/mail, означает безопасное соединение с шифрованием через порт 995 (напомню, обычный почтовый трафик не зашифрован). Gmail требует эту опцию, на остальных серверах включать по желанию и поддержке сервером.<br> | ||
Строка, начинающаяся с ''defaults'', считается общей для всех серверов. | Строка, начинающаяся с ''defaults'', считается общей для всех серверов.<br> | ||
Строка, начинающаяся с ''poll'', заключает в себе опции для одного сервера (ранее эта опция и называлась ''server'', в нынешних версиях переименована). Может заключать в себе несколько почтовых ящиков для разных пользователей (имеет смысл только при запуске {{cmd|fetchmail}} от имени root ). | Строка, начинающаяся с ''poll'', заключает в себе опции для одного сервера (ранее эта опция и называлась ''server'', в нынешних версиях переименована). Может заключать в себе несколько почтовых ящиков для разных пользователей (имеет смысл только при запуске {{cmd|fetchmail}} от имени root ).<br> | ||
Строку вначале файла можно раскомментировать для запуска {{cmd|fetchmail}} в фоновом режиме каждые 1200 секунд (20 минут). | Строку вначале файла можно раскомментировать для запуска {{cmd|fetchmail}} в фоновом режиме каждые 1200 секунд (20 минут). | ||
Строка 29: | Строка 28: | ||
{{cmd|cat /home/localuser/.procmailrc}} | {{cmd|cat /home/localuser/.procmailrc}} | ||
MAILDIR=$HOME/Mail ##вся почта идёт сюда | MAILDIR=$HOME/Mail ##вся почта идёт сюда | ||
DEFAULT=$HOME/default | |||
LOGFILE=$HOME/.procmaillog | LOGFILE=$HOME/.procmaillog | ||
LOCKFILE=$HOME/.lockmail | LOCKFILE=$HOME/.lockmail | ||
Строка 35: | Строка 35: | ||
FORMAIL=/usr/bin/formail ##программа для отлова копий | FORMAIL=/usr/bin/formail ##программа для отлова копий | ||
NL="" | NL="" | ||
##условные строки начинаются с :0 | ##условные строки начинаются с :0 | ||
##не записывайте комментарии в строки условия | ##не записывайте комментарии в строки условия | ||
##отредактируйте ненужные условия! | ##отредактируйте ненужные условия! | ||
##Строки условий начинаются с *, а регулярные выражения ваши лучшие друзья | ##Строки условий начинаются с *, а регулярные выражения ваши лучшие друзья | ||
##условия добавленные после * попадают прямо в egrep | ##условия, добавленные после * попадают прямо в egrep | ||
##строка следующая за условиями, в следующем регистре является именем почтового ящика | ##строка, следующая за условиями, в следующем регистре является именем почтового ящика | ||
#Отлавливание копий, используя formail | #Отлавливание копий, используя formail | ||
:0 Whc: .msgid.lock | :0 Whc: .msgid.lock | ||
| $FORMAIL -D 16384 .msgid.cache | | $FORMAIL -D 16384 .msgid.cache | ||
:0 a | :0 a | ||
$MAILDIR/duplicates | $MAILDIR/duplicates | ||
#люди которые всегда пишут с одного почтового адреса | #люди которые всегда пишут с одного почтового адреса | ||
:0 | :0 | ||
* ^From:.*(petya@rambler.ru|petya86@mail.ru) | * ^From:.*(petya@rambler.ru|petya86@mail.ru) | ||
$MAILDIR/friends | $MAILDIR/friends | ||
#выборка некоторого спама | #выборка некоторого спама | ||
:0 | :0 | ||
* ^Subject:.*(credit|cash|money|debt|sex|sale|loan) | * ^Subject:.*(credit|cash|money|debt|sex|sale|loan) | ||
$MAILDIR/spam | $MAILDIR/spam | ||
#html - ф топку | #html - ф топку | ||
:0 | :0 | ||
* ^Content-Type:.*html | * ^Content-Type:.*html | ||
$MAILDIR/junk | $MAILDIR/junk | ||
#сортировка писем из списков рассылки (в данном случае по заголовку письма List-Id) | #сортировка писем из списков рассылки (в данном случае по заголовку письма List-Id) | ||
:0 | :0 | ||
* ^List-Id:.*Desktop.* | * ^List-Id:.*Desktop.* | ||
$MAILDIR/desktop | $MAILDIR/desktop | ||
:0 | :0 | ||
* ^List-Id:.*community.* | * ^List-Id:.*community.* | ||
$MAILDIR/comm | $MAILDIR/comm | ||
:0 | :0 | ||
* ^List-Id:.*sysadmin.* | * ^List-Id:.*sysadmin.* | ||
$MAILDIR/sysadmins | $MAILDIR/sysadmins | ||
#сортировка по почтовым ящикам писем с разных почтовых учётных записей | #сортировка по почтовым ящикам писем с разных почтовых учётных записей | ||
:0 | :0 | ||
* ^To:.*gmailuser@gmail.com | * ^To:.*gmailuser@gmail.com | ||
$MAILDIR/gmail | $MAILDIR/gmail | ||
:0 | :0 | ||
* ^To:.*supermailuser@mail.ru | * ^To:.*supermailuser@mail.ru | ||
$MAILDIR/mailru | $MAILDIR/mailru | ||
########################################### | ########################################### | ||
# Последние условие: складирует остальную # | # Последние условие: складирует остальную # | ||
Строка 93: | Строка 81: | ||
:0 | :0 | ||
* .* | * .* | ||
DEFAULT | |||
MAILDIR - каталог с почтой. | MAILDIR - каталог с почтой. | ||
DEFAULT - куда будет складываться неотсортированная почта | |||
LOGFILE - куда будем лог писать (иногда бывает полезно читать логи :-) | LOGFILE - куда будем лог писать (иногда бывает полезно читать логи :-) | ||
LOCKFILE - чтобы не запускалось несколько копий одновременно. | LOCKFILE - чтобы не запускалось несколько копий одновременно. | ||
gmailuser@gmail.com и supermailuser@mail.ru | ''gmailuser@gmail.com'' и ''supermailuser@mail.ru'' | ||
соответственно ваши адреса электронной почты. | соответственно ваши адреса электронной почты. | ||
Строка 106: | Строка 94: | ||
Теперь в | Теперь в [[DotFiles/Mail/Mutt|настройки mutt]] следует добавить парочку хуков: | ||
folder-hook | folder-hook gmail set from="gmailuser@gmail.com", realname="stalker\ Вова" | ||
folder-hook | folder-hook mailru set from="supermailuser@mail.ru" | ||
Теперь при работе с этими 2 мейлбоксами будут автоматом подставляться нужные адреса. | Теперь при работе с этими 2 мейлбоксами будут автоматом подставляться нужные адреса. | ||
Есть вариант для ручного [пере]определения, через какой ящик уйдет письмо: | Есть вариант для ручного [пере]определения, через какой ящик уйдет письмо: | ||
macro generic "<esc>1" ":set from=supermailuser@mail.ru" | macro generic "<esc>1" ":set from=supermailuser@mail.ru realname=stalker\ Vova" | ||
macro generic "<esc>2" ":set from=gmailuser@gmail.com" | macro generic "<esc>2" ":set from=gmailuser@gmail.com" | ||
Теперь достаточно нажать последовательно '''Esc''', затем '''1''', и отправителем станет ''supermailuser'' на сервере ''mail.ru''. | Теперь достаточно нажать последовательно '''Esc''', затем '''1''', и отправителем станет ''supermailuser'' с псевдонимом ''stalker Vova'' на сервере ''mail.ru''. | ||
На один мейлбокс можно вешать несколько небольших хуков или один большого размера.Пример: | На один мейлбокс можно вешать несколько небольших хуков или один большого размера.Пример: | ||
folder-hook asd | folder-hook asd set from="supermailuser@mail.ru"; my_hdr X-Operating-System:`uname -a` | ||
Также необходимо все это хозяйство ({{cmd|fetchmail, procmail,msmtp}}) подчинить "командному пункту" — {{cmd|mutt}}: | Также необходимо все это хозяйство ({{cmd|fetchmail, procmail, formail, msmtp}}) подчинить "командному пункту" — {{cmd|mutt}}: | ||
# получение почты стандартной клавишей Shift+G | # получение почты стандартной клавишей Shift+G | ||
macro index G "!/usr/bin/fetchmail -f ~/.fetchmailrc" | macro index G "!/usr/bin/fetchmail -f ~/.fetchmailrc" | ||
Строка 129: | Строка 117: | ||
set from="supermailuser@mail.ru" #дефолтный отправитель, можно и закомментировать, ибо есть записи в "~/.msmtprc" | set from="supermailuser@mail.ru" #дефолтный отправитель, можно и закомментировать, ибо есть записи в "~/.msmtprc" | ||
set envelope_from=yes | set envelope_from=yes | ||
set realname=" | set realname="Vova Petrov" | ||
Строка 166: | Строка 154: | ||
==Безопасность== | ==Безопасность== | ||
Следует помнить, что все вышеперечисленные файлы должны иметь владельцем и группой только своего пользователя, и иметь права доступа 0600 — чтение и запись только для владельца, так как '''они содержат пароли в открытом виде'''. {{cmd|fetchmail}} и {{cmd|msmtp}} не поддерживают опцию "взять пароль из такого-то файла", но если он не указан, будут искать его в файле ~/.netrc ({{cmd|man ftp}}), так что можно указать пароль там один раз вместо нескольких. Если и там пароля нет, то по возможности на консоль будет выведен запрос на ручной ввод пароля. | Следует помнить, что все вышеперечисленные файлы должны иметь владельцем и группой только своего пользователя, и иметь права доступа 0600 — чтение и запись только для владельца, так как '''они содержат пароли в открытом виде'''. {{cmd|fetchmail}} и {{cmd|msmtp}} не поддерживают опцию "взять пароль из такого-то файла", но если он не указан, будут искать его в файле ~/.netrc ({{cmd|man ftp}}), так что можно указать пароль там один раз вместо нескольких. Если и там пароля нет, то по возможности на консоль будет выведен запрос на ручной ввод пароля. Опять же можно использовать сам {{cmd|mutt}} и не доверять пароль более никакой программе. | ||
[[Категория:Почта]] |
Версия от 18:02, 8 июня 2013
Настройка почтовой программы mutt на работу с несколькими аккаунтами и независимыми настройками.
Возьмем связку из fetchmail (это тот,кто будет ловить почту), procmail (разгребать пришедшую почту и складывать куда нам надо и как надо) , для отправки msmtp, ну и сам mutt. Надо сказать, что все нижеприведенное умеет и сам mutt, кроме сортировки почты, но мы рассматриваем сложный случай, когда его функциональности недостаточно. Итак - приступим.
настройка fetchmail
cat /home/localuser/.fetchmailrc
#set daemon 1200 set logfile /home/demo/.fetchmail.log defaults proto pop3 timeout 120 tracepolls mda "/usr/bin/procmail -d %T" fetchlimit 20 limit 150000 poll pop.gmail.com user "gmailuser@gmail.com" is "localuser" password "SuPeRpArOl" ssl poll pop.mail.ru user "supermailuser" keep password "SUperPaSSWord"
где gmailuser@gmail.com и supermailuser -имена пользователей (логин) для авторизации на почтовом сервере, localuser - имя локального пользователя, под которым вы будете читать почту (опция is "localuser" необязательна, все равно почту по почтовым ящикам пользователей рассовывает procmail, если у него хватает прав доступа, конечно), SuPeRpArol и SUperPaSSWord - пароли для почтового сервера, pop.gmail.com и pop.mail.ru - адрес почтового сервера.
Опция proto означает тип соединения, в данном случае pop3.
Опция timeout выставляет таймаут для соединения, по истечении этого времени соединение считается потерянным.
Опция tracepolls указывает fetchmail дописывать в заголовки каждого письма еще один Received с информацией о дате и пути скачивания письма (бывает, что это важно).
Опция mda указывает передавать полученные письма следующей программе, в данном случае сортировшику почты procmail с опциями -t — не отбрасывать почту при невозможности доставки (нет хуже отправленного и потерянного письма) и %T — вместо нее подставляется локальный пользователь, которому следует положить данное письмо в ящик.
Опция fetchlimit указывает на необходимость реконнекта после получения 20 писем с сервера. Необходимо для медленных и неустойчивых каналов, чтобы не качать письма по несколько раз при обрыве очереди.
Опция limit предписывает отказывать в получении писем размером более указанного (в байтах).
Опция keep означает - не удалять письма с почтового сервера после получения.
Опция ssl требуется для Google/mail, означает безопасное соединение с шифрованием через порт 995 (напомню, обычный почтовый трафик не зашифрован). Gmail требует эту опцию, на остальных серверах включать по желанию и поддержке сервером.
Строка, начинающаяся с defaults, считается общей для всех серверов.
Строка, начинающаяся с poll, заключает в себе опции для одного сервера (ранее эта опция и называлась server, в нынешних версиях переименована). Может заключать в себе несколько почтовых ящиков для разных пользователей (имеет смысл только при запуске fetchmail от имени root ).
Строку вначале файла можно раскомментировать для запуска fetchmail в фоновом режиме каждые 1200 секунд (20 минут).
Настройка procmail
cat /home/localuser/.procmailrc
MAILDIR=$HOME/Mail ##вся почта идёт сюда DEFAULT=$HOME/default LOGFILE=$HOME/.procmaillog LOCKFILE=$HOME/.lockmail LOGABSTRACT=no VERBOSE=off FORMAIL=/usr/bin/formail ##программа для отлова копий NL="" ##условные строки начинаются с :0 ##не записывайте комментарии в строки условия ##отредактируйте ненужные условия! ##Строки условий начинаются с *, а регулярные выражения ваши лучшие друзья ##условия, добавленные после * попадают прямо в egrep ##строка, следующая за условиями, в следующем регистре является именем почтового ящика #Отлавливание копий, используя formail :0 Whc: .msgid.lock | $FORMAIL -D 16384 .msgid.cache :0 a $MAILDIR/duplicates #люди которые всегда пишут с одного почтового адреса :0 * ^From:.*(petya@rambler.ru|petya86@mail.ru) $MAILDIR/friends #выборка некоторого спама :0 * ^Subject:.*(credit|cash|money|debt|sex|sale|loan) $MAILDIR/spam #html - ф топку :0 * ^Content-Type:.*html $MAILDIR/junk #сортировка писем из списков рассылки (в данном случае по заголовку письма List-Id) :0 * ^List-Id:.*Desktop.* $MAILDIR/desktop :0 * ^List-Id:.*community.* $MAILDIR/comm :0 * ^List-Id:.*sysadmin.* $MAILDIR/sysadmins #сортировка по почтовым ящикам писем с разных почтовых учётных записей :0 * ^To:.*gmailuser@gmail.com $MAILDIR/gmail :0 * ^To:.*supermailuser@mail.ru $MAILDIR/mailru ########################################### # Последние условие: складирует остальную # # почту в почтовый ящик по умолчанию # ########################################### :0 * .* DEFAULT
MAILDIR - каталог с почтой. DEFAULT - куда будет складываться неотсортированная почта LOGFILE - куда будем лог писать (иногда бывает полезно читать логи :-) LOCKFILE - чтобы не запускалось несколько копий одновременно.
gmailuser@gmail.com и supermailuser@mail.ru соответственно ваши адреса электронной почты.
Mutt
Теперь в настройки mutt следует добавить парочку хуков:
folder-hook gmail set from="gmailuser@gmail.com", realname="stalker\ Вова" folder-hook mailru set from="supermailuser@mail.ru"
Теперь при работе с этими 2 мейлбоксами будут автоматом подставляться нужные адреса. Есть вариант для ручного [пере]определения, через какой ящик уйдет письмо:
macro generic "<esc>1" ":set from=supermailuser@mail.ru realname=stalker\ Vova" macro generic "<esc>2" ":set from=gmailuser@gmail.com"
Теперь достаточно нажать последовательно Esc, затем 1, и отправителем станет supermailuser с псевдонимом stalker Vova на сервере mail.ru. На один мейлбокс можно вешать несколько небольших хуков или один большого размера.Пример:
folder-hook asd set from="supermailuser@mail.ru"; my_hdr X-Operating-System:`uname -a`
Также необходимо все это хозяйство (fetchmail, procmail, formail, msmtp) подчинить "командному пункту" — mutt:
# получение почты стандартной клавишей Shift+G macro index G "!/usr/bin/fetchmail -f ~/.fetchmailrc" macro pager G "!/usr/bin/fetchmail -f ~/.fetchmailrc" macro generic G "!/usr/bin/fetchmail -f ~/.fetchmailrc" # отправка почты через msmtp set sendmail="/usr/bin/msmtp" set use_from=yes set from="supermailuser@mail.ru" #дефолтный отправитель, можно и закомментировать, ибо есть записи в "~/.msmtprc" set envelope_from=yes set realname="Vova Petrov"
msmtp
Конфигурация msmtp:
cat /home/localuser/.msmtprc
defaults logfile ~/.msmtp.log account default : mailru account mailru host smtp.mail.ru port 25 from supermailuser@mail.ru user supermailuser password SuPeRpArOl auth plain account gmailcom host smtp.gmail.com port 587 auth on tls on tls_starttls on tls_certcheck off from gmailuser@gmail.com user gmailuser@gmail.com password SUperPaSSWord
Здесь host — smtp-адрес сервера, куда отправлять почту; port — порт приема почты; from — от чьего имени; user и password — логин и пароль для аутентификации на сервере; опции auth и tls* — для создания защищенного соединения.
Безопасность
Следует помнить, что все вышеперечисленные файлы должны иметь владельцем и группой только своего пользователя, и иметь права доступа 0600 — чтение и запись только для владельца, так как они содержат пароли в открытом виде. fetchmail и msmtp не поддерживают опцию "взять пароль из такого-то файла", но если он не указан, будут искать его в файле ~/.netrc (man ftp), так что можно указать пароль там один раз вместо нескольких. Если и там пароля нет, то по возможности на консоль будет выведен запрос на ручной ввод пароля. Опять же можно использовать сам mutt и не доверять пароль более никакой программе.