Разное общее
# 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
PTR запись — обратная DNS-запись, связывающая IP-адрес сервера с его каноническим именем (доменом). Широко используется при фильтрации почты. Если вы хотите, чтобы письма, отправленные с вашего сервера, благополучно достигали адресата, пропишите для сервера корректную 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]
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
#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