Email разные заметки (mutt, mail, ssmtp, Cisco ESA, Outlook)

Разное общее
# INSTALL
apt install mailutils
apt install sendmail # ставим только если хотим отправлять сообщения напрямую с сервера (без учетной записи gmail/yandex/проч)
apt install mutt

# LOG
 tail -n 10000 -f /var/log/mail* # mail.err mail.warn mail.log mail.info

# Settings

Отправка через утилиту не означает что почта настроена через нее, к примеру, Mutt может использовать настройки ssmtp для отправки почты из файла /etc/ssmtp/ssmtp.conf (самый простой вариант).

Конфиг для почты обычно лежит где-то тут (см. в man mutt, man ssmtp):

# Пользовательский
~/.muttrc
~/.mailrc

# Системный
/etc/ssmtp/ssmtp.conf
/etc/mutt/Muttrc
/etc/mail.rc
/etc/mail/sendmail.cf
/etc/postfix/main.cf

Обычно отправителя, получателя, subject можно указывать как через предварительно заполненный файл, так и через опции для утилиты.

$ cat test
To: petr@redkin.net
From: <login>@corbina.net
Subject: Test Subj
$ ssmtp -s petr@redkin.net <test

$ mutt -s "daily report" petr@redkin.net

# Text

Всем утилитам можно отправлять как через echo, так и через файл.

echo "test text" | mutt -s "test subj" petr@redkin.net
mutt -s "test subj" test@test.ru </home/test/test

# Attachment

Отправка attachment возможна через

  • mutt/mpack из коробки с использованием MIME кодирования
  • mail из коробки
  • ssmtp с использованием uuencode

# Fake From

Почтовый сервер может не проверять поля from (можно даже отослать с president@somecountry.com).

~ $ cat ~/.muttrc
set realname="Vova" # имя отправителя
set from="president@somecountry.com"  # e-mail отправителя
Outlook
outlook проверяет ptr, который прописывается тем, кто выдает IP (поэтому его можно указать только для VDS/VPS услуг у reg.ru, а не для услуги доменное имя).
PTR запись — обратная DNS-запись, связывающая IP-адрес сервера с его каноническим именем (доменом). Широко используется при фильтрации почты. Если вы хотите, чтобы письма, отправленные с вашего сервера, благополучно достигали адресата, пропишите для сервера корректную PTR-запись.
В противном случае будет ошибка Client host rejectedcannot find your hostname
– несовпадение записи MX домена и PTR-записи для IP -адреса сервера ( cкорее всего не прописана PTR запись).
Nov  2 11:14:11 DMG sm-mta[20831]: 0A28DFgx020828: to=<pr@mai-ent.ru>, delay=00:00:56, xdelay=00:00:01, mailer=esmtp, pri=210616, relay=mx.mail-ent.ru. [1.1.183.115], dsn=4.7.25, stat=Deferred: 450 4.7.25 Client host rejected: cannot find your hostname, [1.1.183.93]
Поиск MX/PTR записи для домена.
https://dnschecker.org/mx-lookup.php?query=test.redkin.net 
http://mxtoolbox.com/ReverseLookup.aspx (здесь по IP можно проверить наличие PTR записи)
Cisco ESA

Базовая настройка.

https://internet-lab.ru/cisco_esa_c190_add_domain
Cisco ESA deployment is designed to be as easy as possible. It is deployed into the existing mail delivery chain as a Mail Transfer Agent (MTA). The appliance will be the destination of email for the organization; as such, the public MX records (the DNS record that defines where to send mail) must eventually point to the public IP address of Cisco ESA.
https://www.cisco.com/c/dam/en/us/td/docs/solutions/CVD/Aug2014/CVD-EmailSecurityUsingCiscoESADesignGuide-AUG14.pdf

 

Mutt

Uuencode считается deprecated способ и нежелателен для использования. На практике у меня почтовый клиент Outlook для телефона не распознавал нормально вложения при кодировании их uuencode.

Mutt крут

  • Ему не нужен uuencode для вложений, он использует актуальный MIME.
  • Есть крутые штуки. Например, используя опции -c/-b можно отправлять копии. По опции -c обычные, по -b – скрытые. Из man:
-b address - Specify a blind-carbon-copy (BCC) recipient
-c address - Specify a carbon-copy (CC) recipient

Простой пример отправки текста с subject на определенную почту через Mutt:

echo "test text" | mutt -s "test subj" petr@redkin.net

Меняем адрес источника:

echo "test text" | mutt -s "test subj" -e 'my_hdr From:obama@whitehouse.org' petr@redkin.net

Добавляем вложение:

echo "test text" | mutt -s "test subj" petr@redkin.net -a file

Текст через файл + вложение + тема (-s) + основной получатель + копия (-c) + два скрытых получателя (-b)

mutt -s "test mail subj" test@test.ru -c test1@test.ru -b test2@test.ru -b test3@test.ru -a /home/test/test.xls </home/test/test

Если при отправке выдает ошибку 127, то самое простое – поставить ssmtp и настраиваем отправку через него.

Error sending message, child exited 127 (Exec error.).

sudo apt-get install ssmtp
Mail

#attachment Вывод скрипта как Body, attach через опцию. Attach можно прикрепить несколько используя опцию -a (-a <attach> -a <attach2>).

ruby script.rb | mail -a attach.csv -s "Subject" mail@mail.ru
ssmtp

Использовал ssmtp для отправки почты с серверов, как для Ubuntu, так и для CentOS.

Ставим:

sudo yum install ssmtp

Добавляем свои настройки в файл /etc/ssmtp/ssmtp.conf:

root=<login>@post.ru
AuthUser=<login>
AuthPass=<pass>
mailhub=smtp.post.ru
rewriteDomain=corbina.ru

В случае если username отличается от твоей учетки на почте (например, запускает user login_new, а почта login), нужно добавить alias файле /etc/ssmtp/revaliases. В противном случае почта в поле FROM будет иметь адрес не отправителя, а “username”@domain, что может послужить помещением письма в спам/отбросом письма.

<login_new>:<login>@corbina.ru:smtp.corbina.ru

Базовая отправка:

echo "Hi!" | ssmtp petr@redkin.net

Отправка со всеми полями (from/to/subject). Заполняем файл, а потом “скармливаем” его smtp:

$ cat test
To: petr@redkin.net
From: <login>@corbina.net
Subject: Test Subj

ssmtp -s petr@redkin.net <test

Для дебага используем опцию -v:

ssmtp -v -s petr@redkin.net <test
...

#attachment Отправка вложений ssmtp + uuencode:

(cat msg; uuencode result.csv result.csv) | ssmtp petr@redkin.net

Leave a Reply