/Mail/Mutt/TwoAccounts: различия между версиями

Материал из ALT Linux Wiki
(Редактирование, добавление своих конфигов)
Нет описания правки
Строка 1: Строка 1:
{{MovedFromFreesourceInfo|AltLinux/DotFiles/Mail/TwoAccounts}}
= Настройка почтовой программы  '''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}} с опциями {{fixme}}.
Опция ''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
  DEFAULT


MAILDIR - каталог с почтой.
MAILDIR - каталог с почтой.
default - куда будет складываться неотсортированная почта
DEFAULT - куда будет складываться неотсортированная почта
LOGFILE - куда будем лог писать (иногда бывает полезно читать логи :-)
LOGFILE - куда будем лог писать (иногда бывает полезно читать логи :-)
LOCKFILE - чтобы не запускалось несколько копий одновременно.
LOCKFILE - чтобы не запускалось несколько копий одновременно.


gmailuser@gmail.com и supermailuser@mail.ru
''gmailuser@gmail.com'' и ''supermailuser@mail.ru''
соответственно ваши адреса электронной почты.
соответственно ваши адреса электронной почты.


Строка 106: Строка 94:




Теперь в настройки [[DotFiles/Mail/Mutt|mutt]]  следует добавить парочку хуков:
Теперь в [[DotFiles/Mail/Mutt|настройки mutt]]  следует добавить парочку хуков:


  folder-hook gmailuser set from="Vasya <gmailuser@gmail.com>"
  folder-hook gmail set from="gmailuser@gmail.com", realname="stalker\ Вова"
  folder-hook supermailuser set from="Vasya <supermailuser@mail.ru>"
  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 'set from="stalker <supermailuser@mail.ru>"; my_hdr X-Operating-System:`uname -a`
  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="Kolja Petrov"
  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}} и не доверять пароль более никакой программе.
 
[[Категория:Почта]]

Версия от 15: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 и не доверять пароль более никакой программе.