резервное копирование электронной почты из IMAP в читаемой форме

Вопрос помечен как , но я думаю, стоит отметить, что у вас нет , чтобы использовать awk для этого. В coreutils есть утилита join , которая полезна для такого рода вещей, хотя с вашими данными она немного громоздка.

Я предполагаю, что ваша оболочка - это bash и GNU coreutils. Это можно сделать с другими вариантами, но, вероятно, потребуется дополнительная предварительная / постобработка ваших данных.

Без лишних слов:

join -t"|" -14 -22 -o"$(echo 1.{1..8} 2.1)" \
  <(sort -t"|" -k4 file1.txt) \
  <(sort -t"|" -k2 file2.txt) \
  | grep -Po ".*([\d]+)(?=\|\1$)"

join принимает два входных файла и объединяет их в полях, переданных с параметрами -1 и -2 . -t указывает настраиваемый разделитель полей во входных файлах. join требует, чтобы входные файлы были отсортированы по объединяемым полям, поэтому два входных файла сортируются в рамках подстановок процессов перед передачей в join . Параметр -o определяет способ вывода полей. По умолчанию это поле соединения, за которым следуют поля без соединения файла file1, за которыми следуют поля без соединения файла file2, поэтому нам нужно указать, что мы хотим, чтобы все поля файла 1 были по порядку, а затем поле 1 файла 2.

Вам также необходимо, чтобы соединение было в поле 8 файла file1 и поле 1 файла file1. Здесь это просто реализуется путем поиска строк при совпадении выходных полей 8 и 9 соединения. Использование упреждающего выражения регулярного выражения с grep -Po позволяет нам сделать это и эффективно удалить поле 9, чтобы получить требуемый результат. Результат:

78Z|696931836|0000001|ANT09|2160203|A|1114450|2222222222
78Z|011512345|0000001|ANT09|2160218|D|0319230|4444444444
78Z|033333157|0000001|ANT10|2160208|A|1900460|3333333311
78Z|099999999|0000001|ANT32|2160219|A|0319000|6666666666
78Z|010041586|0000001|ANT33|2160119|A|1835100|3333333333
78Z|012344052|0000001|ANT50|2160203|A|1219570|5555555555

4
16.09.2016, 10:45
3 ответа

Используйте getmail . Это хорошая программа на Python, которую можно использовать для загрузки писем с серверов. Веб-сайт немного устарел, но программное обеспечение обновлено и поддерживается в хорошем состоянии. Вот пример файла конфигурации:

[options]
delete = False

[retriever]
type = SimpleIMAPSSLRetriever
server = my-servername
username = my-username
password = my-password

[destination]
type = Maildir
path = ~/Maildir/

Как видите, можно определить, где хранить почту. Поддерживаются несколько форматов почтовых ящиков. Вы также можете передать почту на локальный сервер IMAP, например голубятня. Если вы не хотите использовать SSL, используйте SimpleIMAPRetriever вместо SimpleIMAPSSLRetriever .

6
27.01.2020, 20:50

Существует инструмент под названием imapsync, который раньше был бесплатным и открытым исходным кодом, но больше не является; Тем не менее, последняя бесплатная / открытая версия широко доступна и может копировать почту с одного сервера imap на другой, включая папки и подпапки.

Итак, на своем сервере резервного копирования вы должны настроить произвольный сервер IMAP и использовать imapsync для периодического копирования почты с рабочего сервера на сервер резервного копирования.

0
27.01.2020, 20:50

OfflineIMAP может быть тем инструментом, который вам нужен. Он втягивает почту в локальное дерево почтовых сообщений, которое, как я считаю, удовлетворяет вашему требованию «читабельности» , поскольку вы можете перемещаться по ним непосредственно в своем MUA.

2
27.01.2020, 20:50

Теги

Похожие вопросы