отправка писем? отправьте их из терминала linux

Введение

Любую работу по оптимизации сайта и сервера, на котором он работает, я начинаю с проведения тестов сайта в его текущем виде. Без этого невозможно оценить результат. Нужно всегда понимать, движешься ты в верном направлении или нет. Приведу простой пример из своего опыта, с которым пришлось столкнуться.

Работа с почтовым ящиком на сервере с утилитой mail.

Чтобы запустить утилиту mail и показать список сообщений в вашем почтовом ящике выполните:

# mail

Команда mail выведет список сообщений в ящике системы. Для вывода дополнительных команд нужно ввести знак (?). Я рассказывал какие бывают подкоманды для утилиты mail выше, вы можете использовать их.

Другой способ просмотра электронной почты — это использования опции «-f»:

# mail -f /var/spool/mail/captain
Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/captain": 0 messages
&

captain — это пользователь на сервере. У меня нет новых сообщений.

Из приведенного выше вывода, вы можете видеть, что он отображает адрес, дату и тему писем в почтовом ящике. Он также отображает амперсанд (&) строку в конце. Чтобы вернуться в основное меню, нажмите «Ctrl Z» или «CTRL D» в зависимости от вашей операционной системы и нажмите клавишу «Enter». Амперсанд (&) позволяет читать, отвечать и удалять сообщения электронной почты.

Чтение почты.

Чтобы прочитать электронную почту, нужно знать N-ый номер почты, просто введите номер почтового письма после амперсанда (&) и нажмите клавишу ВВОДА (Enter). Например:

$ mail -f /var/spool/mail/captain

Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/captain": 2 messages 2 new
>N 1 [email protected] Tue Jan 5 12:01 15/2022 "test Mail subject_1"
N 2 [email protected] Tue Jan 6 12:12 16/2022 "Test Mail subject_2"
&2
Message 2:
From [email protected] Jan 6 12:12 16/2022
---------------
Subject: Test Mail subject_2
------------

This displays the second email details.

Навигация по входящей почте.

Чтобы перейти к следующей электронной почте, введите символ « ». Чтобы вернуться к предыдущему электронной почте, введите символ «-» в после амперсанда:

&-
Message 1:
From [email protected]  Tue Jan 5 12:01 15/2022
---------------
Subject: test Mail subject_1
------------

 Ответить на электронную почту.

После того, как вы прочли письмо, вы можете ответить на него, набрав «reply» после амперсанда и нажав Enter:

&reply
To: [email protected]
[email protected]
Subject: Re: test Mail subject_1

Удаление почтовых писем с ящика.

Вы можете удалить электронную почту, используя опцию «d» после амперсанда и нажав «Enter».

Удалить прочитанное письмо:

&d

Удалить прочитанное письма 2 и 4:

&d 2 4

Удалить письма с 6 по 66:

&d 6-66

Удалить все письма с почтового ящика mbox:

&d *

На этом, у меня все, тема «Команды mail/mailx в примера на Unix/Linux» завершена.

Subject and Message in a single line

To specify the message body in just one line of command use the following style

$ mail -s "This is the subject" [email protected] <<< 'This is the message'

Or like this

Using ‘mail’ Command

mail command is most popular command to send emails from Linux terminal. Use few of below examples to send an email.

mail -s "Test Subject" [email protected] < /dev/null 
  • -s is used for defining subject for email.

Also, you can send an attachment with this command. Use -a for mailx and -A for mailutils.

mail -a /opt/backup.sql -s "Backup File" [email protected] < /dev/null 
  • Here -a is used for attachments. Use -A for debian based systems, which uses mailutils package.

You may face issue: Bash: mail: command not found

Also, we can add comma separated emails to send the email to multiple recipients together.

mail -s "Test Email"  [email protected],[email protected] < /dev/null 

Take message from a file

If the email message is in a file then we can use it directly to send the mail. This is useful when calling the mail command from shell scripts or other programs written in perl or php for example.

Specify CC and BCC recipients

Other useful parameters in the mail command are:

-c email-address (CC - send a carbon copy to email-address)
-b email-address (BCC - send a blind carbon copy to email-address)

Here’s and example of how you might use these options

$ mail -s "Hello World" [email protected] -c [email protected] -b [email protected]

Specify the FROM name and address

The “-a” option allows to specify additional header information to attach with the message. It can be used to provide the “FROM” name and address. Here is a quick example

How the mail command works

For those who are curious about how exactly the mail command delivers the mails to the recipients, here is a little quick explanation.

The mail command invokes the standard sendmail binary (/usr/sbin/sendmail) which in turns connects to the local MTA to send the mail to its destination. The local MTA is a locally running smtp server that accepts mails on port 25.

mail command -> /usr/sbin/sendmail -> local MTA (smtp server) -> recipient MTA (and Inbox)

This means that an smtp server like Postfix should be running on the machine where you intend to use the mail command. If none is running you get the error message “send-mail: Cannot open mail:25”.

Mail command examples

Here are some examples of how to use the mail command to send mails from the command line. These examples shall give you a basic idea of the various options and features supported by the mail command.

Maildir-utils command

‘mu’ is a set of command-line tools for Linux/Unix that enable you to quickly find the e-mails you are looking for.

Test error: browser crashed

Я очень часто сталкиваюсь с ошибкой webpagetest agent. Проверка не заканчивается, а падает с ошибкой – Test Error: Browser crashed. Очень долго пытался разобраться в ней, читая логи агента и сервера, но ничего не вышло. Подобные падения стал замечать на версиях контейнера с агентом выше 18:10.

В итоге я просто откатил всех агентов на эту версию и не использую старше. В целом, это рабочий вариант, если использовать эту же версию сервера. Но в ней тоже есть некоторые ошибки, исправленные в новых версиях. Если взять последнюю версию сервера и агентов 18:10, то в целом все проверки будут проходить нормально, но не будет работать запись видео с загрузкой сайта.

Команда «mail»

Как и Sendmail, вы можете использовать команду mail для отправки писем с терминала. Для этой цели используйте команду, указанную ниже.

mail -s "Test Subject" [email protected] < /dev/null

Здесь -s определяет тему электронного письма.

Чтобы отправить вложение в электронном письме, введите строку, указанную ниже:

mail -a /opt/backup.sql -s "Backup File" [email protected] < /dev/null

Здесь -a используется для включения вложений. Если ваш дистрибутив основан на Debian, используйте -A, потому что он использует пакет mailutils.

Если нужно отправлять электронные письма нескольким получателям одновременно, добавьте электронные адреса, разделенные запятыми:

mail -s "Test Email"  [email protected],[email protected] < /dev/null

Команда «mailx»

GNU Mailutils — это комбинация нескольких пакетов утилит. Все Mailutils могут работать с почтовыми ящиками, начиная с почтовых ящиков UNIX, maildir и заканчивая удаленными почтовыми ящиками. Доступ к этим почтовым ящикам осуществляется по протоколам IMAP4, POP3 и SMTP. Mailutils предназначен для разработчиков, обычных пользователей Linux и системных администраторов.

Для установки используйте следующую команду.

sudo apt install mailutils

Пакет mailutils в основном состоит из двух команд, mail и mailx, и обе они работают одинаково.

Команда «mutt»

Команда mutt помогает отправлять и читать электронные письма с вашего терминала Linux, используя локальные почтовые ящики пользователей. Кроме того, вы можете читать электронные письма с помощью серверов POP / IMAP. Mutt похож на команду Mail. Для отправки электронных писем используйте следующий синтаксис.

mutt -s "Test Email" [email protected] < /dev/null

Вы можете отправить электронное письмо с вложенным файлом с помощью команды mutt. Для этого используйте команду следующим образом:

mutt  -s "Test Email" -a /opt/backup.sql [email protected] < /dev/null

Команда «ssmtp»

Вы можете отправлять электронные письма с помощью SMTP-сервера из терминала Linux с помощью ssmtp.

Используйте указанные ниже строки для отправки электронных писем с помощью ssmtp.

ssmtp [email protected]

Subject: Test SSMTP Email

Email send test using SSMTP

via SMTP server.

^d

Здесь мы отправляем электронное письмо пользователю [email protected] Вам нужно добавить тему с ключевым словом «Subject». Затем вы наберете сообщение, которое хотите передать получателю электронной почты. В конце сообщения нажмите Ctrl D (^ d) для отправки электронного письма.

Команда «swaks»

Команда swaks — это гибкий, ориентированный на транзакции инструмент SMTP с поддержкой сценариев. Расширения SMTP и функции, обрабатываемые этой командой, включают аутентификацию, TLS, конвейерную обработку и другие версии протоколов SMTP. Эта команда Linux также поддерживает различные методы передачи.

Чтобы установить этот инструмент, введите:

sudo apt install swaks

Вам необходимо подключиться к учетной записи SMTP: пользователь -au, сервер -s, адрес -t и пароль -ap. Вам также понадобится «флаг» -tls, если вы подключаетесь к порту 587. Итак, команда должна быть:

Команды mail/mailx в примера на unix/linux

В своей статье «Команды mail/mailx в примера на Unix/Linux» я расскажу как пользоваться утилитой mail в ОС Unix/Linux. Приведу наглядные примеры использования данной утилиты.

Чтобы запустить программу «mail» и вывести список сообщений в почтовом ящике, выполните:

Локальная установка webpagetest

Самый простой вариант установки – использовать готовый образ. В нем предустановлено использование одного агента для тестирования. Все базовые конфиги подготовлены. Если агентов нужно больше, то надо будет вынести конфиги из образа и сделать вручную некоторые настройки. Сейчас выполним простую установку, а дальше я расскажу, как вынести конфиги и полностью управлять настройками.

Скачиваем официальные образы из docker hub:

# docker pull webpagetest/server
# docker pull webpagetest/agent

Настройка ssmtp

После того, как это сделано, нам нужно настроить SSMTP.

Так как в этой статье основное внимание уделяется отправке почты, мы придерживаемся базовой настройки SSMTP. Вы можете использовать это только для отправки почты. Каждый пользователь должен указать адрес электронной почты и пароль каждый раз, когда они отправляют почту. Предположим, все используют один и тот же SMTP-сервер.

Настройка своего сервера webpagetest

Создадим свои docker образы, на основе официальных, немного их изменив, вынеся конфигурации на хостовую машину. Для этого создадим 2 директории:

# mkdir ~/wptserver && mkdir ~/wptagent

Создадим dockerfile и конфиги для сервера:

# cd ~/wptserver && touch Dockerfile locations.ini settings.ini

Содержимое Dockerfile:

FROM webpagetest/server
ADD locations.ini /var/www/html/settings/
ADD settings.ini /var/www/html/settings/

Содержимое locations.ini:

[locations]
1=Test_loc
[Test_loc]
1=Test
label=Test Location
group=Desktop
[Test]
browser=Chrome,Firefox
label="Test Location"

Это базовая настройка для location, которая идет в дефолте. Сюда вы можете добавлять свои агенты, устанавливать их параметры. Подробнее об этом читайте в документации. Вот пример с двумя локациями.

[locations]
1=Moscow_loc
2=Saint-Petersburg_loc
[Moscow_loc]
1=Moscow
label=Moscow
group=Desktop
[Moscow]
browser=Chrome,Firefox
label="Moscow"
[Saint-Petersburg_loc]
1=Saint-Petersburg
label=Saint-Petersburg
group=Desktop
[Saint-Petersburg]
browser=Chrome,Firefox
label="Saint-Petersburg"

Приведенные ранее настройки docker образа призывают использовать оригинальный образ, заменив файл locations.ini и settings.ini на тот, что вы создали. Файл с настройками можете взять дефолтный и что-то там изменить под свои потребности.

maxruns=3
maxtime=600
default_browser_size=1920x1080

Собираем образ с сервером:

# docker build -t local-wptserver .

Делаем то же самое для агента.

# cd ~/wptagent && touch Dockerfile script.sh

Содержимое Dockerfile:

FROM webpagetest/agent
ADD script.sh /
ENTRYPOINT /script.sh

Содержимое script.sh:

Отправка писем с терминала linux с использованием ssmtp

Давайте посмотрим, как вы можете отправлять почту в командной строке Linux с помощью SSMTP.

Отправка электронной почты в linux через ssmtp

Давайте создадим сообщение, которое нужно отправить в файл с именем mail.txt.

Помогла статья? подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

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

Во время обновления статьи, я прогнал тесты своего сайта и обнаружил несколько проблем. Во-первых, у меня не работало сжатие картинок в webp. В какой-то момент плагин перестал работать из-за того, что у него не было прав на бинарник, который выполняет сжатие. Из соображений безопасности это было глобально запрещено, но пострадал работающий инструмент.

Исправил это и пережал все картинки, которые остались после того, как плагин перестал работать.

Об этом мне, кстати, подсказал отчет Lighthouse Report, который надо включить в настройках теста.

После этого можно изучить указанный отчет в браузере.

В этом же отчете, к примеру, я посмотрел все загружаемые css и обнаружил там dashicons.min.css, которые на страницах сайта для пользователей не нужны. Отключил.

И так далее. Webpagetest отличный инструмент для аудита и ускорения сайта. Лучше и удобнее я лично не знаю.

Установка docker на ubuntu 18

Далее расскажу, как установить свою персональную локальную версию webpagetest для регулярного использования. Это может быть нужно по нескольким причинам:

  • Вы часто делаете тесты и вас не устраивает очередь ожидания в публичном сервисе.
  • Вы хотите сами выбирать, где располагать тестовые локации с агентом. Очевидно, что они должны быть там же, где целевая аудитория сайта.

Сервер webpagetest состоит из следующих компонентов:

  1. Сервер с веб интерфейсом.
  2. Агент с браузерами для тестирования.

Отдельно устанавливается сервер с веб интерфейсом и отдельно агенты для тестирования. Сначала рассмотрю самый простой случай, когда агент и сервер установлены через docker контейнер на одном сервере. Для персонального использования этого будет вполне достаточно.

Если вы планируете более масштабное использование, то следите за тем, чтобы было достаточно ресурсов у агента. Если он будет тормозить по какой-то причине, результаты тестов будут искажены. Я лично это наблюдал, когда разворачивал на тестовом сервере и нагружал его посторонними задачами.

Как я уже сказал ранее, сервер и клиент будут в docker. Хостовая система будет Ubuntu 18, как наиболее подходящая для работы с докером. Но в целом это не важно, можете разворачивать на любой системе, где работает docker. Например, можно установить докер на centos.

Если он у вас уже установлен, пропустите этот раздел. Установка docker на Ubuntu 18:

Установка ssmtp

SSMTP доступен в виде пакета в большинстве дистрибутивов Linux. Просмотрите repo вашего дистрибутива, чтобы в этом убедиться. В Ubuntu 18.04 вы можете установить SSMTP следующим образом:

sudo apt install ssmtp

Установка утилиты mail в unix/linux

Для того чтобы установить утилиту mail на CentOS/Fedora/RedHat, используйте:

$ yum install mailx

Для того чтобы установить утилиту mail на Debian/Mint, используйте:

$ apt-get install mailutils

Теперь вы должны иметь команду mail, и можно приступать к работе.

Команда «sendmail»

Используйте команду sendmail для одновременной отправки электронных писем одному или нескольким людям. Sendmail — один из самых популярных SMTP-серверов в Linux. Вы можете легко отправлять электронные письма прямо из командной строки с помощью команды sendmail. Для маршрутизации информации команда sendmail использует сеть, настроенную в вашей системе.

Давайте выполним следующие команды, чтобы создать файл с содержанием электронной почты.

cat /tmp/email.txt

Subject: Terminal Email Send

Email Content line 1

Email Content line 2

Subject  — строка в качестве темы электронного письма.

Теперь, чтобы отправить электронное письмо, используйте следующий синтаксис:

sendmail [email protected]  < /tmp/email.txt

Заключение

Я выбрал установку из контейнера из-за простоты и удобства. Здесь как раз тот случай, где docker оправдывает себя на все 100%. Я собирал все то же самое из пакетов, у меня даже работало, но это занимало в разы больше времени. Система многокомпонентная с огромным числом зависимостей и сервисов.

Sending to multiple recipients

It is also possible to specify multiple recipients by joining them with a comma.

$ mail -s "Hello World" [email protected],[email protected]

Using ‘sendmail’ Command

Sendmail is a most popular SMTP server used in most of Linux/Unix distribution. Sendmail allows sending email from command line. Use below instructions to send email using ‘sendmail‘ command.

Created a file with email content:

cat /tmp/email.txt 

Subject: Terminal Email Send

Email Content line 1
Email Content line 2

Subject: line will be used as subject for email.

Now send email using the following command.

sendmail [email protected]  < /tmp/email.txt 

Read more: Install and Configure Sendmail on CentOS/RHEL

Sending a simple mail

Run the command below, to send an email to [email protected] The s option specifies the subject of the mail followed by the recipient email address.

$ mail -s "Hello World" [email protected]

The above command is not finished upon hitting Enter. Next you have to type in the message. When you’re done, hit ‘Ctrl-D’ at the beginning of a line

$ mail -s "Hello World" [email protected]
Cc:
Hi Peter
How are you
I am fine
Good Bye
<Ctrl D>

The shell asks for the ‘Cc’ (Carbon copy) field. Enter the CC address and press enter or press enter without anything to skip.

From the next line type in your message. Pressing enter would create a new line in the message. Once you are done entering the message, press <ctrl d>. Once you do that, the mail command would dispatch the message for delivery and done.

Send mail with bash/shell scripts

This example demonstrates how the output of a command can be used as the message in the email.Here is an easy shell script that reports disc usage over mail.

#!/bin/bash
du -sh | mail -s "disk usage report" [email protected]

Open a new file and add the lines above to that file, save it and run on your box. You will receive an email that contains “du -sh” output.

Send mail with attachments using mutt

The mail command could do some basic things till now, but moving forward, it lacks important features like sending attachments.

So we have to use another command line tool called mutt. Mutt is like an enhanced version of the mail command with a very similar syntax.

Похожее:  /activate как ввести код с телевизора

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *