Почтовый сервер для начинающих. Структура и принцип работы. Идеальный почтовый сервер

  • Перевод

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

Сегодня поговорим о почтовых серверах на Linux. Мы расскажем о том, как настроить сервер, о широко распространённом в интернете протоколе SMTP, а также о других протоколах, таких, как POP и IMAP. В итоге вы окажетесь обладателем полноценной системы для работы с электронной почтой.

Начнём с SMTP-сервера на Linux

SMTP-сервер

Протокол SMTP (Simple Mail Transfer Protocol) определяет правила пересылки почты между компьютерами, при этом, он не регламентирует правила хранения или визуализации сообщений. Это системно-независимый протокол, то есть, отправитель и получатель почты могут иметь различные ОС.

SMTP требует лишь чтобы сервер был способен отправлять обычный ASCII-текст другому серверу, используя порт 25 , который является стандартным портом SMTP.

Сегодня в большинство дистрибутивов Linux встроены две наиболее распространённых реализации SMTP: sendmail и postfix .

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

Postfix - система немного более продвинутая, при разработке этого почтового сервера особое внимание было уделено вопросам безопасности.

Компоненты почтовой службы

Типичная почтовая служба состоит из трёх основных компонентов:

Почтовый клиент , который ещё называют почтовым агентом (Mail User Agent, MUA). Именно с ним взаимодействует пользователь, например - это почтовые клиенты Thunderbird или Microsoft Outlook. Они позволяют пользователю читать почту и писать электронные письма.

Почтовый сервер , или агент пересылки сообщений (Mail Transport Agent, MTA). Этот компонент ответственен за перемещение электронной почты между системами, этим занимаются, например, Sendmail и Postfix.

Агент доставки электронной почты (Mail Delivery Agent, MDA). Этот компонент ответственен за распределение полученных сообщений по почтовым ящикам пользователей. Например, это Postfix-maildrop и Procmail.

Установка почтового сервера

Для настройки нашего сервера был выбран пакет Postfix. Это - популярный среди системных администраторов выбор, стандартный почтовый сервер в большинстве современных дистрибутивов Linux.

Начнём, проверив, установлен ли Postfix в системе:

$ rpm -qa | grep postfix
Если обнаружить Postfix не удалось, установить его, например, в дистрибутивах, основанных на Red Hat, можно с помощью такой команды:

$ dnf -y install postfix
Затем запустим службу postfix и организуем её автозапуск при загрузке системы:

$ systemctl start postfix $ systemctl enable postfix
В дистрибутивах, основанных на Debian, вроде Ubuntu, установить Postfix можно так:

$ apt-get -y install postfix
В ходе установки будет предложено выбрать конфигурацию сервера. Среди доступных четырёх вариантов (No configuration, Internet site, Internet with smarthost, Satellite system and Local only), мы выберем No configuration , что приведёт к созданию необходимых Postfix учётных записей пользователя и группы.

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

После установки почтового сервера Postfix, его нужно настроить. Большинство конфигурационных файлов находятся в директории /etc/postfix/ .

Главный конфигурационный файл Postfix можно найти по адресу /etc/postfix/main.cf . Здесь имеется множество параметров, рассмотрим самые важные.

myhostname

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

Типичные примеры имён хостов почтовых серверов - mail.example.com и smtp.example.com.

Настраивают этот параметр так:

Myhostname = mail.example.com
mydomain

Эта настройка позволяет указать почтовый домен, обслуживанием которого занимается сервер, например - example.com:

Mydomain = example.com
myorigin

Этот параметр позволяет указать доменное имя, используемое в почте, отправленной с сервера. Присвоим ему значение $mydomain:

Myorigin = $mydomain
В настройках можно ссылаться на параметры, добавляя знак $ перед именем переменной.

mydestination

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

В нашем случае здесь будут имя хоста сервера и доменное имя, но данный параметр может содержать и другие имена:

Mydestination = $myhostname, localhost.$mydomain, $mydomain, mail.$mydomain, www.$mydomain
mail_spool_directory

Почтовый сервер Postfix может использовать два режима доставки почты:

  • Непосредственно в почтовый ящик пользователя.
  • В центральную директорию очередей, при этом почта попадает в папку /var/spool/mail , где имеется файл для каждого пользователя.
mail_spool_directory = /var/spool/mail
mynetworks

Эта переменная - важный параметр настройки. Она позволяет указывать то, какие сервера могут пересылать почту через сервер Postfix.

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

Если неправильно настроить параметр mynetworks , спамеры вполне смогут воспользоваться сервером как ретранслятором почты. Это очень быстро приведёт к тому, что какая-нибудь система борьбы со спамом поместит его в один из чёрных списков, вроде DNS Blacklist (DNSBL), или Realtime Blackhole List (RBL). Как только сервер попадёт в подобный список, очень немногие смогут получить письма, отправленные с его помощью.

Вот как может выглядеть настройка этого параметра:

Mynetworks = 127.0.0.0/8, 192.168.1.0/24
smtpd_banner

Эта переменная позволяет задать ответ, который возвращает сервер при подключении клиентов.

Лучше всего поменять это значение так, чтобы оно не указывало на то, какой именно используется почтовый сервер.

inet_protocols

Эта переменная позволяет задавать версию IP, которую будет использовать Postfix при установлении соединений.

Inet_protocols = ipv4
Для того, чтобы изменения, внесённые в конфигурационные файлы, вступили в силу, службу Postfix надо перезагрузить:

$ systemctl reload postfix
На самом деле, в конфигурационном файле Postfix можно ещё много чего настроить. Например - управлять уровнями безопасности, задавать опции отладки и другие параметры.

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

$ postfix check
С помощью этого средства можно найти строку, в которой допущена ошибка, и исправить её.

Проверка очереди сообщений

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

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

$ mailq
Она выведет сообщения, находящиеся в очереди. Если очередь переполнена и на отправку сообщения уходит по несколько часов, можно инициировать процесс отправки сообщений такой командой:

$ postfix flush
Если теперь проверить очередь, она должна оказаться пустой.

Тестирование почтового сервера

После настройки сервера на Postfix, его надо протестировать. Первый шаг в тестировании - использование локального почтового клиента, вроде mailx или mail (это - символьная ссылка на mailx).

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

$ echo "This is message body" | mailx -s "This is Subject" -r "likegeeks" -a /path/to/attachment [email protected]
Затем попробуйте принять письмо, отправленное с другого сервера.

Если вы столкнётесь с проблемами - проверьте логи. В дистрибутивах, основанных на Red Hat, то, что вам надо, можно найти по адресу /var/log/maillog . В Debian-дистрибутивах нужный файл можно найти здесь: /var/log/mail.log , или же по пути, заданному в настройках rsyslogd. Вот , если нужно, материал о логировании в Linux, и о том, как настраивать rsyslogd.

Если проблемы всё ещё не решены, попытайтесь проверить настройки DNS, взгляните на MX-записи, используя сетевые команды Linux .

Борьба со спамом

Существует немало решений для выявления среди почтовых сообщений нежелательных писем - спама. Одно из лучших - проект с открытым исходным кодом SpamAssassin.
Установить его можно так:

$ dnf -y install spamassassin
Затем надо запустить соответствующую службу и добавить её в автозагрузку:

$ systemctl start spamassassin $ systemctl enable spamassassin
После установки SpamAssassin, взгляните на его настройки в файле /etc/mail/spamassassin/local.cf .

SpamAssassin умеет отличать обычные письма от спама, основываясь на результатах исследования корреспонденции с помощью различных скриптов. Результаты проверок оцениваются в баллах.

Чем выше итоговая оценка письма - тем выше и вероятность того, что оно является спамом.

В конфигурационном файле параметр required_hits 5 указывает на то, что SpamAssassin пометит сообщение как спам, если его рейтинг составляет 5 или выше.

Параметр report_safe принимает значения 0, 1, или 2. Установка его в 0 означает, что письма, помеченные как спам, пересылаются в исходном виде, но их заголовок модифицируется с указанием на то, что они являются спамом.

Если этот параметр установлен в значение 1 или 2, SpamAssassin сгенерирует отчёт и отправит его получателю.

Разница между значениями 1 и 2 заключается в том, что в первом случае спам-сообщение будет закодировано в формате message/rfc822, а во втором - в формате text/plain.

Кодирование text/plain безопаснее, так как некоторые почтовые клиенты исполняют сообщения формата message/rfc822, что при определённых условиях может привести к заражению клиентского компьютера вирусом.

После установки и настройки SpamAssassin, нужно интегрировать его с Postfix. Пожалуй, легче всего это сделать с помощью использования procmail.

Создадим файл /etc/procmailrc и добавим в него следующее:

:0 hbfw | /usr/bin/spamc
Затем отредактируем файл настроек Postfix - /etc/postfix/main.cf , задав параметр mailbox_command следующим образом:

Mailbox_command = /usr/bin/procmail
И, наконец, перезапустим службы Postfix и SpamAssassin:

$ systemctl restart spamassassin
Надо сказать, что SpamAssassin не всегда распознаёт спам, что ведёт к наполнению почтовых ящиков ненужными письмами.

К счастью, сообщения, прежде чем они достигнут почтового сервера на Postfix, можно фильтровать, используя Realtime Blackhole Lists (RBLs). Это снизит нагрузку на почтовый сервер и поможет сохранить его в чистоте.

Откройте конфигурационный файл Postfix /etc/postfix/main.cf , измените параметр smtpd_recipient_restrictions и настройте другие параметры следующим образом:

Strict_rfc821_envelopes = yes relay_domains_reject_code = 554 unknown_address_reject_code = 554 unknown_client_reject_code = 554 unknown_hostname_reject_code = 554 unknown_local_recipient_reject_code = 554 unknown_relay_recipient_reject_code = 554 unverified_recipient_reject_code = 554 smtpd_recipient_restrictions = reject_invalid_hostname, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_rbl_client dsn.rfc-ignorant.org, reject_rbl_client dul.dnsbl.sorbs.net, reject_rbl_client list.dsbl.org, reject_rbl_client sbl-xbl.spamhaus.org, reject_rbl_client bl.spamcop.net, reject_rbl_client dnsbl.sorbs.net, permit
Затем перезагрузите сервер Postfix:

$ systemctl restart postfix
Вышеприведённые чёрные списки используются чаще всего, но вы можете найти и другие подобные сервера.

Защита SMTP-соединения

Лучше всего передавать SMTP-трафик по TLS для защиты его от атаки через посредника.
Для начала нужно сгенерировать сертификат и ключ с использованием команды 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/
Затем надо добавить в файл настроек 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
И, наконец, нужно перезагрузить службу Postfix:

$ systemctl restart postfix
Теперь, при подключении клиента к серверу, нужно выбрать TLS. Тут вы, при первой отправке почты после изменении настроек, увидите предупреждение, так как сертификат не подписан.

Основы протоколов POP3 и IMAP

Итак, мы наладили процесс отправки и получения электронных писем по SMTP, но на этом организация полноценной почтовой службы не заканчивается. Рассмотрим следующие ситуации:
  • Пользователям нужны локальные копии электронных писем для их просмотра без подключения к интернету.
  • Почтовые клиенты пользователей не поддерживают формат файлов mbox. Это - простой текстовый формат, который могут читать многие консольные почтовые клиенты, вроде mailx и mutt.
  • Пользователи не могут постоянно пользоваться быстрым подключением для доступа к файловой системе сервера и для работы с mbox-файлами, в итоге нужно сделать локальную копию для работы с ними без подключения к сети.
  • Ограничения безопасности указывают на то, чтобы у пользователей не было прямого доступа к шлюзу электронной почты, например, не допускается работа с общедоступными папками очередей сообщений.
Для того, чтобы учесть все эти особые случаи, были созданы другие протоколы. Их можно описать как протоколы для доступа к электронной почте.

Сильнее всего распространены два популярных протокола доступа к почте - POP (Post Office Protocol), и IMAP (Internet Message Access Protocol).

В основе POP лежит очень простая идея. Центральный почтовый сервер на Linux всё время подключён к интернету, он получает и сохраняет письма для всех пользователей. Все полученные письма остаются в очереди на сервере до тех пор, пока пользователь не подключится к нему по протоколу POP и не загрузит письма.

Когда пользователь хочет отправить письмо, почтовый клиент обычно передаёт его через центральный сервер по SMTP.

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

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

Используя IMAP, сервер будет поддерживать три режима доступа к почте:

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

Сервера POP3, POP3S, IMAP, и IMAPS слушают, соответственно, порты 110, 995, 143, и 993.

Установка Dovecot

Большинство дистрибутивов Linux содержат предустановленный Dovecot, однако, его можно установить и самостоятельно. В системах, основанных на Red Hat, это делается так:

$ dnf -y install dovecot
В системах, основанных на Debian, функционал IMAP и POP3 предоставляются в двух разных пакетах:

$ apt-get -y install dovecot-imapd dovecot-pop3d
Тут вам предложат создать самозаверенный сертификат для работы с IMAP и POP3 по SSL/TLS. Ответьте на вопрос yes и, при появлении соответствующего запроса, введите имя хоста вашей системы.

Затем можно запустить соответствующую службу и добавить её в автозагрузку:

$ systemctl start dovecot $ systemctl enable dovecot

Настройка Dovecot

Главный файл настроек Dovecot расположен по адресу /etc/dovecot/dovecot.conf . В некоторых дистрибутивах Linux этот файл размещается в папке /etc/dovecot/conf.d/ и, для подключения файлов настроек, используется директива include.

Вот некоторые из параметров, используемых для настройки Dovecot.

protocols : протоколы, которые надо поддерживать.

Protocols = imap pop3 lmtp
Здесь lmtp означает Local Mail Transfer Protocol. listen : IP-адрес, который будет слушать сервер.

Listen = *, ::
Здесь звёздочка означает все интерфейсы IPv4, двойное двоеточие означает все интерфейсы IPv6.

userdb : база данных пользователей для аутентификации.

Userdb { driver = pam }
mail_location : это запись в файле /etc/dovecot/conf.d/10-mail.conf . Выглядит она так:

Mail_location = mbox:~/mail:INBOX=/var/mail/%u
Dovecot поставляется со стандартными SSL-сертификатами и файлами ключей, которые используются в файле /etc/dovecot/conf.d/10-ssl.conf .

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

Не забудьте открыть порты сервера Dovecot на файрволе.

$ 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
И про SMTP-порт не забудьте.

$ iptables -A INPUT -p tcp --dport 25 -j ACCEPT
Затем сохраните правила. Если хотите освежить в памяти особенности работы с iptables в Linux, взгляните на

, | |

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

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

Сложности почтовых серверов

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

Компоненты, необходимые каждому веб-серверу:

  • Агент пересылки сообщений (mail transfer agent, MTA);
  • Агент доставки сообщений (mail delivery agent, MDA);
  • Сервер IMAP и/или POP3.
  • Спам-фильтры;
  • Антивирусы;
  • Веб-почту (webmail).

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

Рассмотрим необходимые компоненты более подробно.

Агент пересылки сообщений

Агент пересылки сообщений (или MTA), обрабатывающий трафик протокола SMTP (Simple Mail Transfer Protocol), отвечает за:

  • отправку сообщений пользователей на внешний MTA (то есть на другой почтовый сервер);
  • получение сообщений от внешнего MTA.

Примеры программ MTA: Postfix, Exim, Sendmail.

Агент доставки сообщений

Агент доставки сообщений (или MDA), который иногда называют локальным агентом доставки (Local Delivery Agent, или LDA), извлекает сообщения из MTA и помещает их в почтовый ящик соответствующего пользователя.

Существует огромное множество форматов почтового ящика (например, mbox и Maildir). Каждый MDA поддерживает определенный формат почтового ящика. Формат почтового ящика определяет способ хранения сообщений на почтовом сервере, что, в свою очередь, влияет на использование диска и скорость доступа к почтовому ящику.

Примеры программ MDA: Postfix и Dovecot.

Серверы IMAP и/или POP3

IMAP и POP3 – это протоколы, используемые почтовыми клиентами, то есть, любое программное обеспечение для чтения и извлечения сообщений. Каждый протокол имеет свои сложности; в данной статье рассмотрены некоторые их ключевые различия.

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

Более простой протокол POP3 перемещает сообщения электронной почты на компьютер почтового клиента (как правило, по умолчанию это локальный компьютер пользователя).

Примеры серверов IMAP и POP3: Courier, Dovecot, Zimbra.

Спам-фильтры

Цель спам-фильтра — уменьшить количество входящего спама или нежелательной почты, попадающей в почтовые ящики пользователей. Для достижения этой цели спам-фильтры применяют правила обнаружения спама, которые учитывают различные факторы (отправителя сообщения, содержание и многое другое), что позволяет оценить сообщение. Если эта оценка превышает так называемый spam level, сообщение распознается как спам.

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

Популярным фильтром с открытым исходным кодом является .

Антивирусы

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

Веб-почта (или Webmail)

Многие пользователи нуждаются в веб-почте. Веб-почта (в контексте работы с почтовым сервером) – это почтовый клиент, доступный пользователям через веб-браузер (Gmail, вероятно, самый известный пример). Этот компонент нуждается в веб-сервере (например, Nginx, Apache) и может запускаться непосредственно на почтовом сервере.

Примеры: Roundcube and Citadel.

Поддержка почтового сервера

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

Черные списки

Одной из распространенных проблем, относящихся к поддержке почтового сервера, является необходимость удерживать его вне черных списков (которые также называются DNSBL, blacklists, или blackhole lists). Такие списки содержат IP-адреса почтовых серверов, которые распространяют спам или «макулатурную» почту, а также серверов с неверно настроенными DNS-записями. Многие почтовые серверы подписываются на один или даже несколько таких черных списков, после чего фильтруют входящие сообщения в зависимости от того, внесен ли почтовый сервер, отправивший сообщение, в список (или списки). Если почтовый сервер попадает в ЧС, его исходящие сообщения будут отфильтрованы (а некоторые заблокированы) перед отправкой получателю.

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

Устранение неполадок

Хотя большинство людей пользуется электронной почтой каждый день, далеко не каждый из них сможет устранить неполадки в этой сложной системе. Например, что делать, если отправленные сообщения не были приняты получателем? Проблема может возникнуть из-за неправильной настройки одного из многих компонентов почтового сервера (например, из-за плохо настроенного спам фильтра исходящих сообщений, или внешних факторов, как черные списки).

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

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

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

Рассмотрим структуру почтового сервера, а также что происходит когда пользователь пытается отправить почту.

Важнейшей часть почтового сервера является MTA (Mail Transfer Agent -- агент пересылки почты) в задачи которого входит прием и передача почты. Очень часто (в Linux / UNIX) МТА называют также почтовым сервером. MTA работает по протоколу SMTP, и его одного, в принципе, уже достаточно для создания системы электронной почты. Когда-то давно именно так и было и для доступа к своему почтовому ящику требовалось обладать определенными техническими знаниями.

Однако прогресс не стоит на месте, MTA, получая письмо, помещает его в почтовый ящик пользователя на сервере, к которому последний должен получить доступ, желательно наиболее простым и понятным способом. Вот здесь на сцену выходит MDA (Mail Delivery Agent -- агент доставки почты), его задача по запросу почтового клиента передать ему почту из почтового ящика на сервере. MDA может работать по протоколам POP3 или IMAP, в ряде случаев для "общения" почтового клиента и агента доставки могут применяться собственные протоколы, обладающие расширенной функциональностью, например MAPI (Exchange Server).

Вопреки распространенному заблуждению, MDA не имеет никакого отношения к процессу передачи почты. Это прерогатива MTA. Если провести аналогию, MTA можно представить как почтовое отделение, которое занимается приемом и отправкой почты, а MDA с почтальоном, который приносит пришедшую корреспонденцию к вам домой. Если почтальон заболел, то это никак не скажется на работе почты, просто вы не получите письма на дом. Также и MDA, его отказ не приводит к неработоспособности почтового сервера, становится недоступно только получение почты почтовым клиентом, в то же время к ней можно спокойно получить доступ другими путями, например, через веб интерфейс.

Посмотрим, что происходит при отправке почты. В нашем примере пользователь Иванов, находящийся в домене example.org ([email protected]), пишет письмо Козлову в домен example.com ([email protected]). Для Иванова процесс отправки почты состоит из создания сообщения и нажатия кнопки "Отправить" в почтовом клиенте. Почтовый клиент соединяется с МТА по протоколу SMTP и первым делом сообщает свои учетные данные. Авторизовав пользователя, MTA принимает сообщение и пытается доставить его дальше.

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

Для авторизации MTA может использовать собственный список пользователей, системный список, списки пользователей LDAP или AD. Также существует способ: авторизация POP прежде SMTP, когда пользователь перед отправкой почты авторизуется на MDA, который, в свою очередь подтверждает аутентификацию пользователя для MTA.

Следующим шагом MTA анализирует служебную информацию письма, определяя домен получателя, если он относится к доменам обслуживаем данным МТА, производится поиск получателя и письмо помещается в его ящик. Так произошло, если бы Иванов написал письмо Петрову или Сидорову.

Если домен получателя не обслуживается MTA, формируется DNS-запрос, запрашивающий MX-записи для данного домена. MX-запись представляет особый вид DNS-записи, которая содержит имена почтовых серверов, обрабатывающих входящую почту для данного домена. MX-записей может быть несколько, в этом случае MTA пробует последовательно установить соединение, начиная с сервера с наибольшим приоритетом. При отсутствии MX-записи запрашивается A-запись (запись адреса, сопоставляющая доменное имя с IP-адресом) и выполняется попытка доставить почту на указанный там хост. При невозможности отправить сообщение, оно возвращается отправителю (помещается в почтовый ящик пользователя) с сообщением об ошибке.

Мы не будем рассматривать работу принимающего сервера, будем считать что все прошло нормально, Козлов получил письмо от Иванова и написал ему ответ. Сервер, обслуживающий домен example.com, проводит точно такие же действия и пробует передать почту нашему серверу. Получив входящее сообщение MTA, как и в случае с локальным отправителем, проверяет домен получателя, если он входит в число обслуживаемых MТА, обработка сообщения продолжается, иначе сервер отказывается принимать почту. После проверки домена проверяется получатель, если он присутствует в списке пользователей, сообщение доставляется в его ящик, в противном случае возможны два варианта: отказ от приема сообщения или прием сообщения в общий почтовый ящик (ящик администратора). С одной стороны такая настройка увеличивает число принимаемого спама, с другой позволяет не потерять письма с ошибками в написании адреса.

Еще одной мерой защиты от спама является запрос PTR-записи. PTR-запись (запись указателя) связывает IP-адрес с именем домена. Запрашивая PTR, MTA принимает почту только в том случае если домен отправителя совпадает с доменом отправляющего сервера.

Рассмотрим пример более подробно. Некий спамерский сервер spam.com пытается рассылать письма с поддельным отправителем, якобы от известного нам сервера example.com. В случае фильтрации по белым / черным спискам такое письмо будет доставлено, так как отправителем числится пользователь из доверенного домена (на что и рассчитывали спамеры). В целях борьбы со спамом MTA формирует запрос PTR записи для IP-адреса отправляющего сервера, который он сообщает в процессе SMTP сессии. Для адреса y.y.y.y PTR-запрос вернет имя домена spam.com, которое не совпадает с доменом отправителя, что будет причиной отказа в приеме данного сообщения. В то-же время сообщения от сервера x.x.x.x будут получены, так как домен из PTR-записи для x.x.x.x (example.com) совпадает с доменом отправителя.

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

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

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

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

Для начала нам нужен какой-нибудь почтовый сервер. Я думаю покупать крутые почтовые сервера в небольшой организации нет смысла, и, конечно же, денег на это Вам никто не даст. Но нам на помощь приходит небольшая программа, которая является почтовым сервером, но при этом бесплатная и проста в настройках. Это - Office Mail Server (Вы ее легко можете скачать в Интернете ).

Office Mail Server (OMS) - бесплатный почтовый сервер под платформу Windows, поддерживает почтовые протоколы POP3 и SMTP. Смысл программы прост, компьютер, на котором установлена данная программа, соединяется с сервером, будь-то обычный Yandex, Mail или почтовый сервер головного офиса Вашей компании (если Ваша организация является филиалом ) с которого нужно забирать письма. После получения писем Office mail Server раскидывает их по пользователям, которые в дальнейшем посредством уже локальной сети будут получать письма с помощью обычного почтового клиента, например The Bat или Mozilla Thunderbird. Все это нам дает то, что в локальной сети достаточно всего лишь одного компьютера с выходом в Интернет, а письма смогут получать все.

Установка программы Office Mail Server

Установка программы проста, просто устанавливаете программу путем запуска exe файла и сразу можете ее запустить, после запуска программы должно появиться следующие окно (если программа установилась корректно ).

Описание настроек программы Office Mail Server

А сейчас давайте рассмотрим описание настроек программы от самого автора программы:

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

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

Локальный домен - используется только для внутренних фиктивных email адресов - например, если вы оставите значение по умолчанию ("mydomain"), все локальные пользователи будут иметь email адреса в виде "user@mydomain", где user - имя пользователя.

Размер файла журнала, KiB - здесь вы можете установить максимальный размер файла журнала (ofmsrv.log) в диапазоне 0...999 кибибайт. Если установлено значение 0 - то запись в журнал не ведется. В противном случае файл ограничивается заданным размером. Я очень не рекомендую устанавливать размер больше 100 KiB – это может привести к заметному снижению быстродействия программы.

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

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

Таймаут серверов POP3 и SMTP (сек) – интервал времени в секундах, по истечении которого сервер считает соединение с почтовым клиентом разорванным, если от почтового клиента не приходят команды. Для почтовых серверов в интернете этот параметр установлен 10 минут(!) – с учетом того, что соединение может быть медленным. Однако в локальной сети такая длительная блокировка совершенно ни к чему, нескольких десятков секунд вполне достаточно. Чтобы этот параметр изменился, необходимо перезапустить программу.

Максимальный размер отправляемого сообщения, KiB – позволяет установить ограничение на размер сообщений, отправляемых через SMTP сервер программы. Этот параметр влияет только на сообщения, которые уходят "наружу", на локальные же сообщения ограничение не действует. Размер задается в кибибайтах. Если ограничение размера не требуется, введите "0".

Использовать фильтр IP для ограничения доступа к серверам – установив этот флажок, вы ограничите возможность подключения к серверам из Интеренета с целью воспользоваться SMTP сервером программы для рассылки SPAM. Серверы SMTP и POP3 будут доступны только с IP адресов, которые успешно прошли алгоритм фильтрации:

  1. Если нет записи, разрешающей доступ - доступ запрещен (Выход).
  2. Если есть запись, запрещающая доступ - доступ запрещен (Выход).
  3. Разрешить доступ.

IP фильтр – эта кнопка вызывает диалоговое окно, в котором можно настроить диапазоны IP адресов, с которых возможен доступ к SMTP и POP3 серверам программы. По умолчанию OMS создает фильтр, настроенный на разрешение доступа только с IP адресов, выделенных локальным сетям:

  • 127.X.X.X маска 255.0.0.0 - localhost
  • 10.X.X.X маска 255.0.0.0 - локальная сеть класса A
  • 169.254.X.X маска 255.255.0.0 - локальная сеть класса B
  • 192.168.X.X маска 255.255.0.0 - локальная сеть класса B
  • 172.16.X.X маска 255.240.0.0 - 16 локальных сетей класса B

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

Если слова "IP адрес" и "Маска подсети" пугают Вас - лучше не трогайте настройки IP фильтра;-) Сначала почитайте литературу по настройке сетей TCP/IP.

Локальные пользователи - список зарегистрированных локальных пользователей, которые имеют возможность соединяться с OFMSRV. У каждого пользователя есть свое уникальное имя, необязательный пароль для подключения к POP3 серверу, и необязательный внешний алиас (который заменит фиктивный внутренний email адрес при отправке сообщения в Интернет, что позволит адресату правильно использовать функцию ответа на сообщение ).

Есть два особых пользователя - один из них "ПОСТМАСТЕР". Это пользователь, ответственный за работу и сопровождение OFMSRV. Он получает специальные сообщения, формируемые системой в случае ошибки, а также все входящие сообщения, адресатов которых сортировщик не смог определить (если сортировщику явно не указано, каким локальным пользователям направлять такие сообщения ).

Другой особый пользователь - "ДЕМОН". Это не настоящий пользователь, а странное создание, которое живет в OFMSRV. Демон не может получать сообщения из Интернет, никто не может подключиться к POP3 серверу под его именем и прочитать его почтовый ящик. Но каждый локальный пользователь может отправить демону любое сообщение, и когда демон его "съест", он запустит сеанс связи с внешним SMTP/POP3 сервером, чтобы отправить накопленную исходящую почту и считать входящую. Это сделано для обеспечения возможности дистанционного запуска сеанса связи, но это можно сделать и вручную из меню OFMSRV, не "будя" демона.

Постмастера и демона нельзя удалять.

Кроме этого, есть пользователь "Босс". Ему попадают копии всех сообщений, отправляемых через SMTP сервер программы, что позволяет контролировать и архивировать исходящую почту всех локальных пользователей. "Боссом" можно назначить любого пользователя, кроме ДЕМОНА, но лучше назначить специальное имя. Нужно не забывать периодически очищать почтовый ящик "босса" – иначе со временем быстродействие программы может заметно снизиться. Также не следует забывать, что такой перехват почты нарушает права человека, однако в некоторых организациях он просто необходим.

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

Для настройки связи с внешним почтовым сервером используйте пункт меню «Настройки->Связь » (у Вас откроется следующие окошко ).

  • SMTP сервер – ip адрес Вашего компьютера, на котором установлена данная программа;
  • SMTP порт – порт почтового сервера;
  • Подключение через LAN - установите этот флажок, если Вы подключены к Интернет постоянно (через локальную сеть ), или через клиента Winsock Proxy. Когда этот флажок снят, будет доступна группа параметров "Использовать это соединение" (только если на компьютере зарегистрированы учетные записи "Удаленного доступа" к сети );
  • Учетные записи POP3 – здесь как раз настраивается удаленный почтовый сервер (можете настроить до 100 учетных записей ).

Для сортировки писем между пользователей нужно использовать следующий пункт меню «Настройка->Сортировщик ». Смысл сортировщика в том, чтобы письма, которые получает OMS, сортировались по пользователям, которые должны получить эти письма.

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

Теперь Вам остается настроить почтовые клиенты пользователей, которые хотят получать письма. Это делается очень просто, там, где Вы указывали настройки транспорта (SMTP и POP3 сервера ), Вы пишите уже свой адрес сервера, например локальный ip адрес компьютера на котором установлен OMS, и указываете пользователя и пароль (именно те, которые Вы заводили в программе OMS ).

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

Мы выпустили новую книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».

Подписаться

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

Сервер электронной почты выступает в роли настоящего, привычного нам почтового отделения, обрабатывая байты, как бумажные послания в конвертах.

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



Что такое протокол почтового сервера

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

Отправка почты SMTP Simple Mail Transfer Protocol

За отправку почты всегда отвечает протокол под название SMTP, первая версия которого была описана ещё в стандартах 1982 года. В 2008 был обновлен до версии ESMTP с расширенным функционалом. Классический порт доступа протокола: 25 TCP, в случае использования SSL оболочки порт меняется на 465 TCP.

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

  • Ваш почтовый клиент на компьютере устанавливает связь с SMTP-сервером, к которому настроена привязка
  • Сервер интересуется только одним параметром, полученным от вас - получателя. Он делает запрос в DNS службу для получения IP-адреса доставки
  • После того, как SMTP-сервер выяснил местоположение получателя в адресном пространстве, происходит попытка прямого соединения с сервером получателя на порт 25
    SMTP-сервер получателя проверяет наличие клиента в базе данных, в случае совпадения, передаёт данные на свой внутренний POP3 сервер для помещения в ящик пользователя.
  • Если возникли проблемы при соединении с SMTP-узлом получателя, пыпытка отправки будет повторяться ещё несколько раз через определенные промежутки времени. В случае отказа, вам придёт обратно письмо-ошибка

Получение и хранение почты POP3 Post Office Protocol 3

Самый первый, классический и простой протокол удалённого доступа к почтовому ящику. Ни для кого не секрет, что электронная почта хранится на серверах, а то, что вы видите на экране - только её локальная копия. В 1988 году была создана третья, финальная версия протокола, по которому клиенты могут осуществлять забор корреспонденции с серверов. По умолчанию, после копирования писем на локальное хранилище по протоколу POP3, с сервера они безвозвратно удаляются. Стандартный порт доступа: 110 TCP

Рассмотрим шаблонный сеанс работы с POP3-сервером:

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

Расширенная работа с почтой IMAP Internet Message Access Protocol

Более сложный, комплексный и современный протокол работы с удалённым сервером почты. Появился в 1986 году, и существенно увеличился в объемах последнего издания 2003 года. Главное отличие от POP3 связи в том, что работа ведётся без пересылок всего содержания, вы находитесь прямо на сервере и редактируете информацию непосредственно там. Минусом протокола является невозможность работы с почтой при потере соединения с интернетом. Некоторые специалисты считают, что IMAP стал бы монополистом почтовых протоколов, если бы не его посредственная реализация функции отправки писем. Основной порт подключения: 143 TCP или 993 TCP при подключении через шифрованный SSL канал.

Сервер IMAP может находиться в четырёх состояниях

  • Без аутентификации. Сервер ожидает передачи логина и пароля от пользователя
  • Аутентифицирован. Происходит выбор почтового ящика для дальнейшей работы
  • Состояние выбора. После выбора почтового ящика начинается работа с письмами в нём.
  • Выход. Закрытие соединения по ошибке или запросу клиента

Собственный почтовый сервер

Рядовому пользователю достаточно почтовых сервисов Google, Яндекса и т. д. Но гораздо сложнее приходится администраторам порталов и фирм, для которых необходимо поднимать программное обеспечение почтовых пересылок. Ни одна компания не захочет получать заказы от клиентов под чужим доменным именем, а значит, приходит время создания собственного почтового узла. Вариантов тут несколько

Готовые решения

Яндекс и MAIL.ru предоставляют бесплатно услуги почтового провайдера для вашего домена. Это значит, что вы получаете почту по адресу [email protected], точно так же было, если бы вы вручную создавали собственный почтовый сервер. Но заботы по обработке корреспонденции компания берёт на себя, предоставляя удобный веб-интерфейс и отдельные адреса для сотрудников.

Ещё одним плюсом является то, что адреса серверов корпоративных почтовых серверов всегда в доверии клиентов, а значит гораздо меньше шансов попасть в спам.

Самостоятельная настройка вручную

Это - сложный путь. Настраивать такой сервер самому долго. И обратиться в специальную компанию будет проще, а то и дешевле.

Для Windows Server классическим считается Microsoft Exchange Server. Полностью интегрируется в среду Windows, совместим по всем протоколам, быстродействующий и легкий в настройке

Для Linux существует несколько полновесных решений, однако специалисты в последнее время отмечают сервер Postfix, как самый безопасный и удобный вариант работы. Подключаемые спам-фильтры, контроль пропускаемой почты и поддержка баз данных - неотъемлемые части Postfix.