Mail linux smtp server

Send mail from command line with external smtp server on Linux

Send mail via SMTP servers

The default mail command on the Linux terminal, uses the local smtp server (mta) on port 25 to send emails. However at times you need to specify an external smtp server to use for sending mails.

For example you have just setup an smtp server, like Postfix or Exim, then you would want to test it out to check if it is receiving and relaying emails properly or not.

Being able to send mails from command line using this external smtp server is quick rather than having to setup a mail client like Thunderbird on your local machine.

There are 2 command line utilites called mailx and swaks that can be used to send mails using external smtp server. These are quite useful when you need to send emails from a bash script in an automated manner.

1. mailx command

The mailx command is available from many different packages like mailutils, heirloom-mailx etc. First you need to use the aptitude command to search the mailx package available for your system. Here is an example

To find out which mailx command your system is using, run the readlink command. Here is a sample output.

Not all mailx variants can use external smtp servers to send mail. Only the one that comes from the s-nail package (pulled by heirloom-mailx) can do it.

We shall be using heirloom-mailx since it allows to specify smtp connection details in a single command and issue and email quickly.

Now send an email with an external smtp server like this —

Here is a step by step version of the same command —

Make sure to use the correct settings, like port number, authentication mechanism etc. The command would produce verbose output giving full details of the smtp communication that goes on behind, making it very easy to test and debug.

Note: The package heirloom-mailx was removed from Ubuntu version 18 onwards. Now you have to install the s-nail package.

The s-nail command is the same as heirloom mailx command. Just the name is different. Run the same command above by replacing mailx with s-nail and it should work.

If you are using the latest version of s-nail (14.9.x) the syntax for specifying the smtp server details might be slightly different. Check the latest manual here

2. Swaks command

Swaks (Swiss army knife for SMTP) is a simple command line tool that can be used to test smtp servers to check if they are doing they job properly. It supports TLS as well.

Install swaks on Ubuntu/Debian with the following command

Now send the email

All the options are pretty self explanatory. The «—server» option specifies the external SMTP server to use, «—auth» specifies the type of authentication. The «-tls» option tells swaks to use STARTTLS.

Check the man page for more options.

A Tech Enthusiast, Blogger, Linux Fan and a Software Developer. Writes about Computer hardware, Linux and Open Source software and coding in Python, Php and Javascript. He can be reached at [email protected] .

5 thoughts on “ Send mail from command line with external smtp server on Linux ”

telnet your.smtp.server 25
HELO your.ip
MAIL FROM:
RCPT TO:
DATA
Subject: YOUR SUBJECT
Your message then end with a point
.
(then disconnect)

I use Thunderbird as a mail client and have been experimenting with sending mail through Thunderbird via the bash command line. I want to be able to send an email within a bash script.

I can successfully make Thunderbird open a compose window to send a mail, but I really want it to happen in the background with NO human interaction. Is there an option I can give Thunderbird on the command line to send the message straight away ?

This is what I’ve got so far :-

thunderbird -compose “preselectid=id3,[email protected],subject=’Dropbox Sync Log `date +%D`’,body=’`cat

I fully realise I don’t need to attach a file as well as catting it into the message. I’ve just left it in to show that attachments are possible from the command line, that’s all.

If someone knows how to make Thunderbird actually send the email from the command line instead of opening a window in Thunderbird client, I’d be delighted to hear from you.

Thanks a lot. very useful.

–body is required for swaks in order to read message body from standard input; otherwise the default body of “This is a test mailing” will be used.

[QUOTE from man]
–body [body-specification]
Specify the body of the email. The default is “This is a test
mailing”. If no argument to –body is given, prompt to supply one
interactively. If ‘-‘ is supplied, the body will be read from
standard input. If any other text is provided and the text
represents an open-able file, the content of that file is used as
the body. If it does not represent an open-able file, the text
itself is used as the body.

Читайте также:  Samsung ml 3310 linux

If the message is forced to MIME format (see –attach) the argument
to this option will be included unencoded as the first MIME part.
Its content-type will always be text/plain.

Hi, great examples to connect to a smtp server from command line. I also like this: https://github.com/gasparfm/gscripts/blob/master/gemail.sh It uses sendmail (you can have nullmailer configured to connect to a smtp server). The best of it is that you can send attachments.

I use it to send by emails files generated directly on a server.

Источник

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

Подготовка

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

В Debian / Ubuntu:

apt-get install mailutils

В CentOS / Red Hat:

yum install mailx

Синтаксис

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

echo «Test text» | mail -s «Test title» master@dmosk.ru

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

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

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

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

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

а) для CentOS / Red Hat:

echo ‘Attachment’ | mail -s ‘Subject attachment message’ -a /var/log/maillog master@dmosk.ru

echo ‘Attachment’ | mail -s ‘Subject attachment message’ -a /var/log/maillog -a /var/log/maillog2 master@dmosk.ru

echo ‘Attachment’ | mail -s ‘Subject attachment message’ -A /var/log/maillog -A /var/log/maillog2 master@dmosk.ru

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

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

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

echo «Test text» | mail -s «Test title» master@dmosk.ru,shmaster@dmosk.ru

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

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

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

echo «Test copy» | mail -s «Test copy title» master@dmosk.ru -c master2@dmosk.ru

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

echo «Test hidden copy» | mail -s «Test hidden copy title» master@dmosk.ru -b master3@dmosk.ru

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

В CentOS / Red Hat:

echo «Test text» | mail -s «Test title» -r postmaster@dmosk.ru master@dmosk.ru

В Debian / Ubuntu:

echo «Test text» | mail -s «Test title» master@dmosk.ru -aFrom:postmaster@dmosk.ru

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

а) Для Ubuntu / Debian:

echo «Test text» | mail -s «Test title» -a «Smtp: smtp.mail.ru:25» -a «From: postmaster@dmosk.ru» -a «Return-path: postmaster@dmosk.ru» master@dmosk.ru

б) Для CentOS / Red Hat:

echo «Test text» | mail -s «Test title» -S smtp=»smtp.mail.ru:25″ master@dmosk.ru

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

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

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

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

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

yum install mutt

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

apt-get install mutt

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

echo «Текст сообщения» | mutt -s «Тема» [дополнительные опции] —

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

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

echo «Attachment» | mutt -s «subject» -a /var/log/maillog — master@dmosk.ru

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

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

echo «Mail From» | mutt -s «subject» -e ‘my_hdr From: Дмитрий

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

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

Для начала, открываем файл с конфигурацией Mutt:

* в данном примере мы отправим всю нашу почту через узел smtp.mail.ru, порт 25.

Также можно добавить при необходимости:

set smtp_user = user
set smtp_pass = password
set ssl_verify_host = no
set ssl_verify_dates = no
set ssl_starttls = no
set ssl_force_tls = no

  • smtp_user — имя учетной записи, под которой нужно авторизоваться на SMTP.
  • smtp_pass — пароль для аутентификации.
  • ssl_verify_host — нужно ли проверять валидность сертификата.
  • ssl_verify_dates — нужно ли проверять дату действия сертификата.
  • ssl_starttls — нужно ли использовать STARTTLS.
  • ssl_force_tls — нужно ли принудительное использование TLS.

Теперь можно отправлять письмо:

echo «Mail From» | mutt -s «subject» -e ‘my_hdr From: Дмитрий

Источник

Настройка почтового сервера в Linux

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

Читайте также:  Windows server 2012 файл hosts

Настраиваем почтовый сервер в Linux

На текущий момент времени в открытом доступе находится несколько настраиваемых почтовых серверов, и каждый из них обладает своими особенностями. Мы сосредоточим свое внимание на самых популярных и востребованных решениях, уделив время и дополнительным компонентам. За пример будет взят дистрибутив Ubuntu, а для обладателей RedHat представлены отдельные команды, если отличия от указанных будут иметься. Перед началом разбора каждого этапа предлагаем ознакомиться с вводной и очень важной информацией, которая позволит разобраться в общем принципе работы рассматриваемой системы.

SMTP и компоненты почтовой службы

Некоторых пользователей интересует вопрос передачи электронных писем по интернету, связанных с необходимостью использования разных составляющих, отвечающих за определенные действия. Сортировка и пересылка подобной информации — сложный процесс, осуществляемый специальными алгоритмами. Самым важным компонентом этой цепи выступает SMTP (Simple Mail Transfer Protocol), который и является почтовым сервером. Он отвечает за соблюдение установленных правил пересылки, соответственно, выполняя ее. Без сервера остальные звенья цепи вообще не смогут работать. Серверы обмениваются информацией между собой, а значит, задействуют для этого порт. Чаще всего им выступает номер 25. Сами же разновидности серверов бывают разными, а сегодня за пример мы возьмем более продвинутый Postfix. Теперь рассмотрим общую структуру системы.

  • Почтовый клиент. Это та программа, через которую вы получаете и просматриваете свои письма. Самый банальный пример — Microsoft Outlook. Реализация графического интерфейса позволяет даже самому начинающему пользователю управлять своей учетной записью, даже не задумываясь о том, что скрыто за простыми кнопками.
  • Почтовый сервер. Выше мы уже сказали, что этот компонент выполняет опцию пересылки. Его можно назвать своеобразным почтальоном в мире интернета.
  • Агент доставки электронной почты. Последнее звено цепи, которое еще называется Mail Delivery Agent или сокращенно MDA. Именно этот инструмент отвечает за то, чтобы письмо было доставлено конкретному адресанту, а не заблудилось на просторах огромного сервера. В нашем случае подобным помощником будет выступать Postfix-maildrop.

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

Шаг 1: Инсталляция Postfix

Ранее мы уже уточнили, какой инструмент взяли за пример. Если вас этот выбор не устраивает, инсталлируйте любую другую утилиту и переходите к ее конфигурации по указанным в следующих шагах инструкциям, учитывая новые особенности. Иногда в стандартной сборке дистрибутива сервер Postfix уже установлен, что можно проверить командой grep postfix , однако в большинстве случаев его приходится инсталлировать самостоятельно, что мы и продемонстрируем далее.

    Все дальнейшие действия будут осуществляться через стандартный «Терминал» путем ввода туда команд, поэтому запустите его удобным образом, например, через меню приложений.

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

Запустится процесс получения и распаковки файлов. Не прерывайте его и не выполняйте других действий, чтобы случайно не наткнуться на ошибки.

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

После операция инсталляции продолжится, и вы будете уведомлены о его окончании, когда появится новая строка ввода.

По завершении процесса добавьте новую службу сервера в автозагрузку, введя systemctl start postfix .

Это действие тоже следует подтвердить вводом пароля от учетной записи суперпользователя.

Теперь активируйте ее через systemctl enable postfix , чтобы приступить к настройке.

В этот раз придется ввести пароль сразу несколько раз, поскольку подтверждение подлинности будут запрашивать разные компоненты одновременно.

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

Шаг 2: Настройка установленного сервера

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

    Как известно, конфигурация в Linux осуществляется путем изменения строк в специальных файлах. Для этого используется удобный текстовый редактор. Новичкам может быть сложно освоить vi, поэтому мы советуем установить сначала более простое решение. Для этого введите в консоли команду sudo apt install nano и нажмите на Enter.

Подтвердите уведомление о необходимости скачивания архивов и ожидайте конца загрузки.

После используйте команду sudo nano /etc/postfix/main.cf , чтобы запустить конфигурационный файл.

Здесь обратим внимание лишь на главные параметры. myhostname — после знака = вам следует указать имя хоста почтовой системы в интернете, чтобы сервер мог принимать и отправлять письма.

Строка mydomain отвечает за обслуживание домена, на котором располагается сервер.

В параметре myorigin указывается используемое доменное имя. Мы предлагаем сохранить привычный для многих вид myorigin = $mydomain .

mydestination — последний параметр, на который хотим обратить внимание. Эта строка определяет конечные доменные имена, куда будут доставляться письма. Указывайте значения в соответствии со своими потребностями.

После внесения всех изменений нажмите на Ctrl + O, чтобы сохранить файл.

Не меняйте его название, а просто нажмите на Enter.

Завершите работу в текстовом редакторе через Ctrl + X.

Теперь потребуется перезагрузить сервер, чтобы все изменения вступили в силу. Сделайте это в «Терминале», написав команду systemctl reload postfix .

У вас не получится сразу же узнать, были ли допущены какие-то ошибки в конфигурации, поэтому для этого понадобится запускать средство проверки через postfix check . В новых строках отобразятся сведения о текущем состоянии сервера, и по ним можно определить корректность работы.

Читайте также:  Как обновить драйвера через центр обновления windows

Если по каким-то причинам рассмотренный только что файл не был создан, то при его открытии вы получите информацию о том, что это новый объект. Соответственно, он будет полностью пустым и все важные строки придется создать самому. Конечно, необходимый код можно найти в интернете, но вам будет достаточно скопировать и вставить следующую информацию.

# /usr/local/etc/postfix/main.cf
# Config file for postfix mail system.
#

queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix

mail_owner = postfix
default_privs = nobody
myhostname = yourhost.yourdomain.com
mydomain = yourdomain.com
mynetworks = 192.168.1.0/24, 127.0.0.0/8

myorigin = $mydomain
inet_interfaces = $myhostname, localhost
mydestination = $myhostname, localhost.$mydomain, $mydomain
default_transport = smtp
alias_database = hash:/etc/aliases
mailbox_command = /usr/local/bin/procmail

smtpd_banner = $myhostname ESMTP READY
smtpd_client_restrictions = permit_mynetworks, reject_unknown_client
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_address, reject_non_fqdn_sender, reject_invalid_hostname
smtpd_recipient_restrictions = permit_mynetworks, permit_mx_backup, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, check_relay_domains, reject_unknown_client, reject

local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 10
debug_peer_level = 2
debugger_command =
PATH=/usr/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5

После останется просто сохранить все эти изменения и внести правки, соответствующие вашим требованиям.

Шаг 3: Проверка очереди сообщений

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

Если вдруг окажется, что очередь переполнена и никаким образом не продвигается, вполне вероятно, что произошел определенный сбой, мешающий наладить функционирование сервиса. Самый банальный вариант решения этой ситуации — очистка списка ожидающий сообщений. Это происходит через команду postfix flush . Если же и это не помогло, придется искать причины, анализируя текущее состояние сервера.

В качестве примера отметим одну опцию, которая выглядит следующим образом:

$ echo «This is message body» | mailx -s «This is Subject» -r «likegeeks» -a /path/to/attachment someone@example.com

Она отвечает за отправку сообщения определенному клиенту в целях проверки. Всю информацию, которая размещена в этой команде, следует заменить на свою, чтобы письмо было доставлено адресанту. Более детальные сведения по составлению подобных скриптов вы найдете в официальной документации сервера.

Шаг 4: Настройка безопасности

Из представленных выше руководств вы уже знаете, что Postfix и другие серверы взаимодействуют с устройствами через сеть. Если соединение не будет защищено, вполне возможна ситуация совершения атак с целью похитить данные или нарушить стабильность работы ОС. Проще всего организовать правила безопасности с помощью системы OpenSSH, но для начала ее требуется установить и выполнить основную конфигурацию. Детальнее об этом читайте в других материалах на нашем сайте, воспользовавшись приведенными ниже ссылками.

Огромной популярностью пользуется протокол OpenSSL, поэтому во многих документациях показаны варианты настройки почтового сервера именно с помощью этого инструмента. Примеры команд выглядят так:

openssl genrsa -des3 -out mail.key
openssl req -new -key mail.key -out mail.csr
cp mail.key mail.key.original
openssl rsa -in mail.key.original -out mail_secure.key
openssl x509 -req -days 365 -in mail.csr -signkey mail_secure.key -out mail_secure.crt
cp mail_secure.crt /etc/postfix/
cp mail_secure.key /etc/postfix/

Они отвечают за генерацию и получения ключа безопасности. Дополнительно потребуется внести изменения в файл /etc/postfix/main.cf , добавив такие строки:

smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/postfix/mail_secure.crt
smtpd_tls_key_file = /etc/postfix/mail_secure.key
smtp_tls_security_level = may

После выполнения подобной процедуры не забудьте перезагрузить и проверить сервер, чтобы убедиться в корректности его функционирования.

Шаг 5: Установка и конфигурация Dovecot

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

    В консоли введите команду sudo apt-get -y install dovecot-imapd dovecot-pop3d и нажмите на Enter. Для обладателей RedHat команда выглядит немного иначе: dnf -y install dovecot .

Подтвердите права суперпользователя, введя пароль в новой строке.

Ожидайте окончания получения и распаковки архивов. Во время этой операции также будут обновлены правила профиля OpenSSH.

Добавьте рассматриваемый инструмент в автозагрузку через systemctl start dovecot .

Подтвердите это действие, написав пароль в появившемся окне.

Вставьте команду systemctl enable dovecot , чтобы запустить Dovecot.

Теперь вы можете открыть конфигурационный файл для настройки через sudo nano /etc/dovecot/dovecot.conf .

Изначально в этом файле не будет практически никаких параметров, поэтому их понадобится вставлять самостоятельно. Не станем углубляться в тонкости настройки, а лишь предоставим самые базовые и необходимые строки, который вы можете скопировать, вставить и сохранить файл.

protocols = imap pop3 lmtp
listen = *, ::

userdb <
driver = pam
>

Для межсетевого экрана потребуется отдельно ввести следующее:

$ iptables -A INPUT -p tcp —dport 110 -j ACCEPT
$ iptables -A INPUT -p tcp —dport 995 -j ACCEPT
$ iptables -A INPUT -p tcp —dport 143 -j ACCEPT
$ iptables -A INPUT -p tcp —dport 993 -j ACCEPT

$ iptables -A INPUT -p tcp —dport 25 -j ACCEPT

Для FirewallD эта структура выглядит немного иначе:

$ firewall-cmd —permanent —add-port=110/tcp —add-port=995
$ firewall-cmd —permanent —add-port=143/tcp —add-port=993
$ firewall-cmd —reload

Как видите, процесс конфигурации действительно сложный, однако при соблюдении инструкций все пройдет быстро и без каких-либо трудностей. К сожалению, в рамках одной статьи просто невозможно уместить все моменты взаимодействия с Postfix, поэтому советуем изучить материалы на официальном сайте, если в этом возникла необходимость.

Помимо этой статьи, на сайте еще 12315 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Источник

Оцените статью