fetchmail: Пишем сами простейший консольный мейл-фетч (забор письма из почты с кодом верификации)

  • Автор темы ceviche
  • Дата начала
  • Просмотров 434 Просмотров
  • Внимание! В разделе большое количество не проверенных программ. Мы не рекомендуем использовать их на основном ПК, без предварительной проверки.

ceviche

Новорег
3
0
18 Янв 2025
Всем привет,

Вот полезная программа из недавних тех которыми пришлось пользоваться. Допустим сценарий: вытягиваем из сайта какую-то полезную информацию, или перебираем вводные данные. Многие сегодня пользуются двухфакторной авторизацией - то есть нам приходит на почту письмо с кодом подтверждения. Если мы автоматизируем процесс и пишем, например, веб скрейпер, как в предыдущем моем посте, то и письмо должна забрать и распарсировать программа.

В данном слуае используем базовую линуксовую утилиту fetchmail:

Bash:
root@me:~$ apt install fetchmail procmail
root@me:~$ mkdir INBOX
root@me:~$ nano ~/.fetchmailrc

Прописываем следующие строки в файл .fetchmailrc (если мы root):

C-like:
set postmaster 'root'

poll mail.onionmail.org with protocol IMAP port 993
user 'example@onionmail.org' is 'root' here
password '1234'
folder 'INBOX'
fetchlimit 2000
keep
ssl
mda '/usr/bin/procmail -d %s'

Где логин и пароль той почты откуда забираем код верификации
keep - не удалять из ящика прочитанное письмо но я например это перебиваю опцией -К при вызове fetchmail дабы не исчерпывать лимит почтового ящика
mda - какой программой обратывается забранное письмо. если не укразывать, то они буду просто дописываться в один и тот же файл /var/spool/mail/root если вы root

мы же выбираем обработать полученное письмо программой procmail, а именно так, чтобы просто выдать содержимое письма на STDOUT - поэтому и приписка -d %s. Это нам позволит легко обратотать содержимое письма другими полезными утилитами Линукс, из коротых нас интересует grep для поиска по тексту

Теперь почтовая "забиралка" настроена. Скрипт для автоматического забора писем, например, другой программой:
Bash:
root@me:~$ touch mailscript
root@me:~$ chmod +x mailscript
root@me:~$ nano mailscript

и его содержимое:
Bash:
#!/bin/bash
/usr/bin/fetchmail -UK | /usr/bin/grep 'Verification Code: ' | /usr/bin/grep -v '>Verification Code: ' | /usr/bin/grep -o '[0-9]*'


То есть - на почту пришло письмо одной из строк которого является следующая строка:
Код:
Verification Code: 92731
Если оно непрочитано, запустив скрипт получаем следующий ответ:
Bash:
root@me:~$ ./mailscript
92731

Пишите свои программы сами и никогда не попадайтесь!
 
Последнее редактирование: