Отправка почты из командной строки Linux

Thank you for reading this post, don't forget to subscribe!

Подготовка

Для нача­ла уста­нав­ли­ва­ем ути­ли­ту для отправ­ки почты. В про­тив­ном слу­чае мы уви­дим ошиб­ку mail: command not found.

В Debian / Ubuntu:

apt-get install mailutils

В CentOS / Red Hat:

yum install mailx

Синтаксис

Мож­но отпра­вить сооб­ще­ние сле­ду­ю­щей командой:

echo "Test text" | mail -s "Test title" master@test.ru

* в дан­ном при­ме­ре будет отправ­ле­но пись­мо на элек­трон­ный адрес master@test.ru с темой Test title и телом пись­ма — Test text.

Если при отправ­ке воз­ник­ли про­бле­мы, мож­но про­ве­рить логи сле­ду­ю­щей командой:

tail /var/log/maillog

Примеры использования командной строки для email-отправки

1. Отправка письма с вложением

Для раз­ных типов дис­три­бу­ти­ва Linux коман­ды могут отличаться.

а) для CentOS / Red Hat:

echo 'Attachment' | mail -s 'Subject attachment message' -a /var/log/maillog master@test.ru

б) для Ubuntu:

echo 'Attachment' | mail -s 'Subject attachment message' -a /var/log/maillog -a /var/log/maillog2 master@test.ru

… или:

echo 'Attachment' | mail -s 'Subject attachment message' -A /var/log/maillog -A /var/log/maillog2 master@test.ru

* где /var/log/maillog и /var/log/maillog2 — фай­лы, кото­рые будут при­креп­ле­ны к пись­му. Обра­ти­те вни­ма­ние, что обе коман­ды отли­ча­ют­ся по реги­стру опции a и A — все зави­сит от вер­сии и сбор­ки Linux (в каких-то нуж­но исполь­зо­вать малень­кую, в каких-то — боль­шую). Так­же обра­ти­те вни­ма­ние, что в при­ме­ре для Ubuntu мы отпра­вим 2 фай­ла — для это­го про­сто добав­ля­ем к коман­де еще одну опцию при­креп­ле­ния файла.

2. Несколько получателей

Для отправ­ки пись­ма несколь­ким полу­ча­те­лям, про­сто пере­чис­ля­ем их через запятую:

echo "Test text" | mail -s "Test title" master@test.ru,shmaster@test.ru

* в дан­ном при­ме­ре мы отпра­вил пись­мо на ящи­ки master@test.ru и shmaster@test.ru.

3. Отправка с копией

Отпра­вить копию на адрес master2@test.ru:

echo "Test copy" | mail -s "Test copy title" master@test.ru -c master2@test.ru

Отпра­вить скры­тую копию на адрес master3@test.ru:

echo "Test hidden copy" | mail -s "Test hidden copy title" master@test.ru -b master3@test.ru

4. Указать отправителя

В CentOS / Red Hat:

echo "Test text" | mail -s "Test title" -r postmaster@test.ru master@test.ru

В Debian / Ubuntu:

echo "Test text" | mail -s "Test title" master@test.ru -aFrom:postmaster@test.ru

5. Отправка через другой SMTP сервер

echo "Test text" | mail -s "Test title" -S smtp="smtp.mail.ru:25" master@test.ru

Одна­ко, если сто­рон­ний поч­то­вый сер­вер рабо­та­ет по шиф­ро­ван­но­му кана­лу и тре­бу­ет аутен­ти­фи­ка­цию, необ­хо­ди­мо вве­сти следующее:

echo "Test text" | mail -v -s "Test title" -S smtp="smtp.test.ru:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="master@test.ru" -S smtp-auth-password="password" -S ssl-verify=ignore -S nss-config-dir=/etc/pki/nssdb -S from=postmaster@test.ru master@test.ru

* где smtp.test.ru — сер­вер smtp; 587 — порт для под­клю­че­ния к сер­ве­ру отправ­ки; smtp-use-starttls ука­зы­ва­ет на исполь­зо­ва­ние шиф­ро­ва­ния через TLSsmtp-auth=login зада­ет аутен­ти­фи­ка­цию с исполь­зо­ва­ни­ем логи­на и паро­ля; smtp-auth-user и smtp-auth-password — соот­вет­ствен­но логин и пароль; ssl-verify=ignore отклю­ча­ет про­вер­ку под­лин­но­сти сер­ти­фи­ка­та без­опас­но­сти; nss-config-dir ука­зы­ва­ет на ката­лог с база­ми nss; from зада­ет поле FROM

Mutt

При воз­ник­но­ве­нии про­блем, мож­но вос­поль­зо­вать­ся про­грам­мой mutt. Сна­ча­ла поста­вим ее.

а) если исполь­зу­ем CentOS / Red Hat:

yum install mutt

б) если исполь­зу­ем Ubuntu / Debian:

apt-get install mutt

Теперь мож­но поль­зо­вать­ся. Синтаксис:

echo "Текст сооб­ще­ния" | mutt -s "Тема" [допол­ни­тель­ные опции] -- <кому отправить>

Примеры использования Mutt

Отпра­вить вложение :

echo "Attachment" | mutt -s "subject" -a /var/log/maillog -- master@test.ru

* где /var/log/maillog — файл, кото­рый будет при­креп­лен к письму.

Ука­зать отправителя:

echo "Mail From" | mutt -s "subject" -e 'my_hdr From: Дмит­рий <postmaster@test.ru>' -- master@test.ru

* дан­ной коман­дой mutt отпра­вит пись­мо от postmaster@test.ru.