Почту настраиваем
ПРОШУ ПОМОЩИ ЗАЛА.
Учения. Танкисты, матерясь, в 4 руки и два лома натягивают
гусеницу, слетевшую с танка. Из леса выходит добрая фея.
Высокая упругая грудь, тонкая ткань почти не скрывает соски,
стройные ноги, крутые бедра. Танкисты замирают.
- Ребята, а что вы тут делаете?
- Да вот, с танком трахаемся, добрая фея!
- Ребята, а хотите по-настоящему?
Глаза жадно ощупывают точеную фигуру, из глоток вырывается синхронное:
- Да!
.....и тут у танка отваливается башня.
Я, собственно, вот по какому вопросу:
Соратники, не дайте сдохнуть, я скоро в дурку заеду
настраиваю связку getmail, msmtp, mutt, procmail.
Я поборол почти все. уперся в procmail
вот мое дерево почты (каталоги и файлы):
alex@notebook ~/.mail $ tree
.
├── amironov
│ ├── cur
│ │ └── 1562182568.M686779P14827Q0R8e681dbf8120e46f.notebook:2,S
│ ├── new
│ └── tmp
├── Ecommerce
│ ├── cur
│ ├── new
│ └── tmp
├── gmail
│ ├── cur
│ │ └── 1562182125.M852524P14679Q0Rfe2acfc7f6cb946b.notebook:2,S
│ ├── new
│ └── tmp
├── Friend1
│ ├── cur
│ │ └── 1562520517.R12670711615782988453.notebook:2,RS
│ ├── new
│ └── tmp
├── Friend2
│ ├── cur
│ │ ├── 1562520477.R12799866849081418210.notebook:2,S
│ │ ├── 1562520574.R14957473799001087079.notebook:2,S
│ │ ├── 1562520760.R6763992453627636914.notebook:2,S
│ │ └── 1562520772.R1709183417940068172.notebook:2,RS
│ ├── new
│ └── tmp
├── Job
│ ├── cur
│ ├── new
│ └── tmp
├── postponed
│ ├── cur
│ ├── new
│ └── tmp
├── sent
│ ├── cur
│ │ ├── 1562519057.R11840993877962342247.notebook:2,S
│ │ └── 1562582534.R14704903298050425199.notebook:2,S
│ ├── new
│ └── tmp
└─── yahoo
├── cur
│ ├── 1562180439.M52818P13145Q0R572e332a6a8991eb.notebook:2,RS
│ ├── 1562333758.M985882P18564Q0R436ffca9522cbb2e.notebook:2,S
│ ├── 1562333762.M373281P18568Q2R3ae771006127d622.notebook:2,S
│ ├── 1562333763.M273938P18569Q3Recba8f766d00c74c.notebook:2,S
│ ├── 1562333765.M135745P18571Q4Rb57a3bb11a9d9046.notebook:2,S
│ ├── 1562336319.R6411631296372496960.notebook:2,S
│ ├── 1562508899.M348571P21494Q2Rf97585630f3f9520.notebook:2,S
│ ├── 1562574770.M878921P20142Q0R9bde17cf39e02791.notebook:2,S
│ └── 1562574773.M709425P20144Q1R0613870e5016c0ec.notebook:2,S
├── new
└── tmp
А теперь над чем я бьюсь вторые сутки:
procmail
Вот его конфигурация:
# .procmailrc - конфиг для procmail
# Переменные
#
MAILDIR=$HOME/.mail # каталог с почтой
LOGFILE=$HOME/procmail.log # лог для записи всех операций
#DEFAULT=$HOME/.mail/NonSorted # файл для не отсортированных сообщений
SH=/bin/bash
#
# Upon debugging, you want verbose, you make it yes
VERBOSE=yes
#LOGABSTRACT=all
##
## PGP processing
# f - filter the message through an external program. Procmail discards the existing message and replaces it with the output of the program.
# Excellent for adding or removing headers, often with the formail program that is included with Procmail. This is not a delivering recipe as it only modifies the message.
# B - egrep the body for the conditions listed below
# W - wait for the external program to finish. (Including it is a good idea when when using h, b, or f.)
# ---------
# H - egrep the header for the conditions listed below. This is the default unless other flags are specified.
# D - tell egrep to be case sensitive. (By default it is case insensitive, which is usually what you want.)
# h - pipe the header to an external program
# b - pipe the body to an external program
##
:0
* !^Content-Type: message/
* !^Content-Type: multipart/
* !^Content-Type: application/pgp
{
:0 fBw
* ^-----BEGIN PGP MESSAGE-----
* ^-----END PGP MESSAGE-----
| formail \
-i "Content-Type: application/pgp; format=text; x-action=encrypt"
:0 fBw
* ^-----BEGIN PGP SIGNED MESSAGE-----
* ^-----BEGIN PGP SIGNATURE-----
* ^-----END PGP SIGNATURE-----
| formail \
-i "Content-Type: application/pgp; format=text; x-action=sign"
}
#
# Правила сортировки почты
#
Вот как я его запускаю:
procmail < ~/.mail/
пробовал и вот так:
procmail < ~/.mail/yahoo
пробовал и вот так
procmail < ~/.mail/yahoo/new
Вот какой лог он мне выдает
procmail: [2363] Mon Jul 8 15:09:47 2019
procmail: Match on ! "^Content-Type: message/"
procmail: Match on ! "^Content-Type: multipart/"
procmail: Match on ! "^Content-Type: application/pgp"
procmail: No match on "^-----BEGIN PGP MESSAGE-----"
procmail: No match on "^-----BEGIN PGP SIGNED MESSAGE-----"
procmail: Locking "/var/mail/alex.lock"
procmail: Assigning "LASTFOLDER=/var/mail/alex"
procmail: Opening "/var/mail/alex"
procmail: Acquiring kernel-lock
procmail: Unlocking "/var/mail/alex.lock"
procmail: Notified comsat: "alex@4:/var/mail/alex"
Folder: /var/mail/alex
При этом я же вижу:
~/.mail/yahoo/cur $ cat 1562574770.M878921P20142Q0R9bde17cf39e02791.notebook:2,S| grep "BEGIN PGP MESSAGE"
-----BEGIN PGP MESSAGE-----
-----BEGIN PGP MESSAGE----- cat 1562574770.M878921P20142Q0R9bde17cf39e02791.notebook:2,S| grep "END PGP MESSAGE" -----END PGP MESSAGE----- -----END PGP MESSAGE----- Вот кусок текста сообщения, о котором речь: --0000000000006addfe058d220578 Content-Type: text/plain; charset="UTF-8" -----BEGIN PGP MESSAGE----- Version: Mailvelope v3.2.0 Comment: https://www.mailvelope.com Какого хрена, а? Чего ему не хватает? Я уже протер гугль до дыр, скопировал все возможные и невозможные варианты, и туплю: Мои проблемы: 1. procmail не ловит сообщения с фильтром указанным выше. (это необходимо для PGP-сообщений, которые сделаны не по фэн-шую отправителем). 2. Я не могу отловить НИ ОДНОГО сообщения, которое попадает вот под такое правило: :0 Hw * ^From.*ebay.de.* Ecommerce или вот такое: :0 * ^From.*ebay.de.* Ecommerce или вот такое: :0 Hw * ^.*[Ff]rom: name.lastname@gmail.com UserNameBox При этом это известная уважаемая программа, то есть явно проблема на моей стороне, кто-нибудь понимает, что я делаю не так? Спасибо большое заранее_ потому что у меня варианты уже тупо закончились, я не знаю как еще извратиться и что еще сделать.
Апдейт:
прямое исполнение вот такой команды прямо из каталога входящей почты:
~/.mail/yahoo/cur $ cat * | formail -s procmail
Дало вот такой результат:
procmail: [4971] Mon Jul 8 15:58:04 2019
procmail: Match on ! "^Content-Type: message/"
procmail: Match on ! "^Content-Type: multipart/"
procmail: Match on ! "^Content-Type: application/pgp"
procmail: Match on "^-----BEGIN PGP MESSAGE-----"
procmail: Match on "^-----END PGP MESSAGE-----"
procmail: Executing " formail \
-i "Content-Type: application/pgp; format=text; x-action=encrypt""
procmail: No match on "^-----BEGIN PGP SIGNED MESSAGE-----"
procmail: No match on "^From.*ebay.de.*"
procmail: Locking "/var/mail/alex.lock"
procmail: Assigning "LASTFOLDER=/var/mail/alex"
procmail: Opening "/var/mail/alex"
procmail: Acquiring kernel-lock
procmail: Unlocking "/var/mail/alex.lock"
procmail: Notified comsat: "alex@9:/var/mail/alex"
From me@amironov.com Mon Jul 8 15:58:04 2019
Subject: test subject
Folder: /var/mail/alex 438968
Но сильно легче не стало: да, оно отлавливает сообщения, попадающие под маску, но почему:
1. Только при исполнении в каталоге cur текущего почтового ящика?
2. Не выполняется изменение тела сообщения? Вот это:
procmail: Executing " formail \
-i "Content-Type: application/pgp; format=text; x-action=encrypt""
не оказывает никакого влияния на тело письма. Я ожидаю, что после этого появятся правильные описатели письма и оно будет распознаваться mutt'ом как нормальное PGP-письмо
- cynic's blog
- Login to post comments
> Вот как я его
> Вот как я его запускаю: procmail < ~/.mail/
Не правильно! procmail требует на входе один файл с мылом внутри, а ты ему скармливаешь мэйлбокс целиком.
Почти
Почти правильно - явное указание формата хранения почты спасло тебя.
Оставляя за скобками вопрос о том, зачем тебе внешние getmail и msmtp - сам mutt всё это умеет,
folder - корневая папка;
spoolfile - подпапка или внешняя папка, содержимое которой показывается при старте mutt по умолчанию. Шорткат "!";
header_cache - это нужно, если ты получаешь почту с сервера по вялой сети самим mutt'ом. В твоём случае - не нужно;
mailboxes - список подпапок или внешних папок через пробел, которые будут тебе доступны с помощью шорткатов, содержимое которых будет мониториться на предмет новых писем и которые будут показываться на левой панели (если эта опция у тебя скомпилирована).
Так, мужчина,
Так, мужчина, стоять, вы мне и нужны. Вы и про сортировщик наверняка знаете, и ещё пару интересных вещей. Я напишу вам роман.
Пишите же.
Пишите же. Пишите в стихах!
Может и знаю.
P.S. Добрая фея ушла развлекаться с эльфами. Сегодня я за неё.
Зам. доброй феи,
Зам. доброй феи, сегодня у меня дурдом лютый, в субботу и воскресенье я планирую этим заниматься.
Меня интересуют такие вещи как работа с несколькими аккаунтами (я прочитал про hooks, но мало что понял), сортировка входящего потока писем по индивидуальным ящикам, настройка чтения писем в html формате.
Можем с тобой слиться в экстазе на эту тему? Если да, стукнись пожалуйста в Ватсапп, на тему того, когда тебе удобно.
Спасибо.
Что-то могу
Что-то могу прямо сейчас сказать:
Несколько аккаунтов - с точки зрения чтения, всё просто - сервер это просто внешняя папка. Если указать её в списке "mailboxes" ты получишь все это добро. Типа так:
[mailboxes pops://user1:password1@popserver1.com:port imaps://user2:password2@imapserver2.com:port]
и так далее. Тут основная проблема, что количество зарезервированных имён mailboxes ограничено, а вбивать каждый раз в командной строке длинную колбасу "imaps://user2..." не очень удобно. На этот счёт существует множество решений: хуки, алиасы для мэйлбоксов, sidebar слева. Я пользуюсь sidebar.
Для отправки через разные сервера нужен соответствующий хук.
html читается просто - в "/etc/mailcap" прописать строку "text/html; /usr/bin/w3m -dump -T text/html %s; copiousoutput". w3m, понятно дело должен быть в системе
Никаких имап: я
Никаких имап: я хочу иметь почту локально, только локально и никак иначе. Меня смущают следующие вещи:
1. Твой (например) именной каталог должен находиться на том же уровне, что и inbox
2. Не поддерживается вложенность каталогов. Нельзя сделать вот так:
\yahoo
!
\friends
!
\KKK
!
\Shved
И так далее. Все ящики должны "жить" на одном уровне и в сайдбаре отображаются списком, а не деревом.
> Никаких
> Никаких имап
Какая разница? Это всего лишь протокол. Хочешь - скачивай, хочешь - оставляй на сервере. Дело хозяйское.
>ящики должны "жить" на одном уровне
Тем проще.
Я с procmail не особо фамильярен. Но я вижу, он у тебя лезет в
...
procmail: Assigning "LASTFOLDER=/var/mail/alex"
procmail: Opening "/var/mail/alex"
…
Позволю себе предположить, это не то место, где лежит твоя почта.