FAQ по работе электронной почты и настройке серверов. (для начинающих.)

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

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

FAQ по работе электронной почты и настройке серверов.

Сообщение Ленивая Бестолочь »

Часто задаваемые вопросы по работе электронной почты.


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

Если вы хотите видеть здесь ответ на какой-нибудь свой вопрос - напишите мне об этом.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: FAQ по работе электронной почты и настройке серверов.

Сообщение Ленивая Бестолочь »

Обязательная терминология:

MTA — почтовый сервер SMTP, который принимает подключения на 25 порту, принимает входящую почту и занимается ее дальнейшей доставкой.
MUA — mail user agent. Почтовый клиент пользователя. Thunderbird/Icedove, Outlook, The Bat и т.п.

SMTP (tcp, порт 25) — это протокол передачи почты, который используется для ее отправки. По нему происходит взаимодействие между почтовыми серверами, а так же процесс отправки почты от пользователя на сервер.

POP3 (tcp,udp, порт 110) — это протокол, по которому пользователь получает(скачивает) почту с сервера. Соединение устанавливается, почта получается, соединение разрывается.
IMAP (tcp,udp, порт 143,220) — тоже протокол получаения почты, но работает с почтой удаленно, не скачивая ее с сервера, таким образом у пользователя создается впечатление, что он работает с локальным каталогом с письмами в почтовом клиенте, а на самом деле он лежит на сервере.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: FAQ по работе электронной почты и настройке серверов.

Сообщение Ленивая Бестолочь »

Примеры серверов.

SMTP: sendmail, exim, postfix, qmail.
POP3: courier, dovecot, ipopd, qpopper, popa3d, qmail-pop3d
IMAP: courier, dovecot.
webmail: squirrelmail, horde, openwebmail.

Статьи по настройке:
sendmail:
http://www.freebsd.org/doc/ru_RU.KOI8-R/bo...k/sendmail.html
http://www.linuxcenter.ru/lib/articles/soft/sendmail.phtml
http://www.citforum.ru/internet/servers/glava3_1_1.shtml
http://www.openbsd.ru/docs/howto-sendmail.html

Кое-что из официальной документации:
http://www.sendmail.org/m4/readme.html - Sendmail 8.12.11 cf/README - Sendmail Configuration Files
http://www.sendmail.org/~ca/email/ - Links to e-mail related informations

И немного сторонней:
http://www.devshed.com/c/a/Administration/...-with-Sendmail/ - Getting Started with Sendmail
http://www.crapules.com/wordpress/2008/04/...il-without-dns/ - Setup sendmail without DNS
http://linux.ufaras.ru/sendm.html - Подборка ссылок по sendmail
(спасибо danger08)

exim:
http://www.lissyara.su/?id=1016
http://www.opennet.ru/base/net/exim_intro.txt.html
http://forum.ru-board.com/topic.cgi?forum=...4&start=220

postfix:
Почтовый сервер на базе Postfix с аккаунтами пользователей в PostgreSQL
Корпоративный почтовый сервер на базе Postfix sasl2 tls
за ссылки про postfix спасибо Indarien
Подробное how-to: "Почтовый сервер (postfix, dovecot, squirrelmail)" (ubuntu)
за how-to спасибо его автору - pelmen

qmail:
http://www.lifewithqmail.org/lwq.html - "Life with Qmail" (пошаговое руководство для настройки mail-сервера на основе qmail)
http://www.ru.qmail.org/docs/lwq/lwq.html - "Жизнь с qmail" (то же самое, но по-русски)
http://qmail.jms1.net/ - сайт John M. Simpson'a, одного из идеологов концепции qmail и разработчика "combined patch"
http://qmailrocks.org - англоязычный форум, обсуждение вопросов, связанных с qmail (инструкция для установки, расположенная на сайте, устарела)
http://qmailrocks.ru/ - русскоязычный сайт и форум, посвященные qmail
http://goodcleanemail.com/ - набор FAQ и Troubleshooting Tips
http://www.wimble.info/articles/dspam-qmail-vpopmail.php - Integrating DSPAM, Qmail, and VPopmail
http://toaster.godshell.com - Godshell qMail Toaster
http://www2.inter7.com/?page=simscan - Inter7 -- simscan
(за qmail спасибо danger08)

Списки неполные, если хотите добавить туда что-либо — напишите мне.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: FAQ по работе электронной почты и настройке серверов.

Сообщение Ленивая Бестолочь »

Процесс отправки письма.

Схему отправки почтового сообщения можно примерно изобразить примерно так:
1)Пользователь написал письмо в своем почтовом клиенте и нажал кнопку «отправить», клиент соединился с SMTP сервером (25 порт) и передал ему письмо.
2)SMTP сервер проанализировал письмо и пришел к выводу — куда его отправить дальше.
3)SMTP сервер связался с SMTP сервером, который обслуживает почтовый адрес получателя и передал письмо ему.
4)SMTP сервер получателя положил письмо в свое хранилище.
5)Адресат нажал в своем почтовом клиенте кнопку «получить почту» и соединился с сервером по протоколу POP3.
6)Адресат скачал себе сообщение с сервера по POP3 и сидит его читает.

Стоит отметить вопрос, который часто смущает новичков:
Грубо говоря с точки зрения SMTP сервера вся почта, которая к нему попадает является входящей. После получения письма SMTP сервер решает — куда его деть. Дальше, в зависимости от настроек он может придти к выводу, что это почта его пользователю и положить ее в хранилище или, если это письмо не его пользователю — отправить адресату. Таким образом при обсуждении работы SMTP сервера не стоит пользоваться терминами «входящая» и «исходящая почта». Я обычно говорю — почта для «наших» и «не наших» пользователей.

Если у вас остались вопросы по тому, как работает электронная почта — обязательно прочитайте эту статью: http://www.samag.ru/cgi-bin/go.pl?q=articles;n=12.2005;a=03
она короткая и понятная.
(За ссылку спасибо Goodvin.)
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: FAQ по работе электронной почты и настройке серверов.

Сообщение Ленивая Бестолочь »

Почта и DNS.

Для того, чтобы узнать — на какой сервер подключаться по SMTP и вручать туда письмо ваш почтовый сервер делает запрос DNS на предмет записи MX.

Вот как она выглядит:

Код: Выделить всё

rakul@tycoon:~/rage$ host -t mx mail.ru
mail.ru mail is handled by 10 mxs.mail.ru.


Здесь мы видим, что почту для зоны @mail.ru принимает сервер mxs.mail.ru.

Может быть нескольно MX записей:

Код: Выделить всё

rakul@tycoon:~/rage$ host -t mx vefk.ru
vefk.ru mail is handled by 10 relay.vefk.ru.
vefk.ru mail is handled by 20 mailhub.vefk.ru.


Тут почту принимают два сервера. Циферки 10 и 20 означают их приоритет.
Более приоритетным является сервер с меньшим значением.

Настройка MX в DNS:
http://info.nic.ru/st/8/out_265.shtml
http://mirror.yandex.ru/altlinux/2.4/Maste...cs/ch06s13.html
http://www.ounix.ru/index.php?page=article&id=20



По поводу проверки валидности отправителя через DNS.

В классическом SMTP этого сделать нельзя.
То есть если вы почтовый сервер и вам пришло письмо с обратным адресом masha@masha.ru с хоста petya.ru вы должны безропотно это письмо принять. (я сейчас говорю только о несоответствии имен).

Однако в связи с большим количеством спама было предложено решение, оно называется SPF.
Суть кратко в следующем: в DNS отправителя вносится запись, в которой содержится список хостов, с которых следует принимать почту.
Например:

Код: Выделить всё

rakul@tycoon:~/rage$ host -t txt mail.ru
mail.ru descriptive text "v=spf1 ip4:194.67.57.0/24 ip4:194.67.23.0/24 ip4:194.67.45.0/24 ip4:195.239.211.0/24 ip4:194.186.55.0/24 ip4:195.239.174.0/24 ip4:94.100.176.0/20 ~all"

Это говорит нам о том, что принимать почту с обратным адресом @mail.ru можно только если она пришла к вам с хостов
194.67.57.0/24 194.67.23.0/24 194.67.45.0/24 195.239.211.0/24 194.186.55.0/24 195.239.174.0/24 94.100.176.0/20

по поводу «~all» в конце:
-all — принимать ТОЛЬКО с этих хостов
~all — рекомендуется принимать только с этих адресов
?all — на spf можно не обращать внимание

SPF в exim
Об SPF в wikipedia

После нескольких лет существования SPF выяснилось, что технология не безгрешна и есть ситуации, в которых она дает сбои. Например, когда почта переадресовывается с одного сервера на другой.
В том числе таким образом по SPF отрезается часть рассылок mail.ru.
Для обработки таких ситуаций была разработана надстройка — технология SRS.

Также существует механизм проверки валидности отправителя DKIM.
Он работает следующим образом: в заголовки письма (хедер DKIM-Signature) добавляется электронная подпись отправителя.
Сервер получателя берет публичный ключ отправителя и с помощью него проверяет информацию в хедере.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: FAQ по работе электронной почты и настройке серверов.

Сообщение Ленивая Бестолочь »

Проверка работоспособности smtp сервера.

Для проверки вашего smtp сервера можно воспользоваться утилитой telnet.

Подключаемся к почтарю на порт 25 (smtp), видим приветствие сервера.

Код: Выделить всё

rakul@tycoon:~/rage$ telnet rbpost.xxxx.ru 25
Trying 172.16.116.224...
Connected to rbpost.xxxx.ru.
Escape character is '^]'.
220 rbpost.xxxx.ru ESMTP server ready

Нужно его поприветствовать в ответ:

Код: Выделить всё

EHLO tycoon.xxxx.ru

EHLO — расширенное HELO. После этого слова идет имя хоста, который пытается отправить почту.
В ответ мы полуаем список возможностей почтового сервера:

Код: Выделить всё

250-rbpost.xxxx.ru Hello tycoon.xxxx.ru [172.16.17.174]
250-SIZE 20971520
250-8BITMIME
250-AUTH PLAIN LOGIN
250 HELP

говорим — от кого почта:

Код: Выделить всё

mail from:rak@xxxx.ru
250 OK

кому почта:

Код: Выделить всё

rcpt to:vsad@xxxx.ru
250 Accepted

начинаем сообщение:

Код: Выделить всё

DATA
354 Enter message, ending with "." on a line by itself
test
.

сообщение заканчивается точкой.

Код: Выделить всё

250 OK id=1LoYoD-0002fH-6s

нам сказали, что сообщение взято в обработку. Выходим.

Код: Выделить всё

quit
221 rbpost.xxxx.ru closing connection
Connection closed by foreign host.

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

Также можно отправить письмо командой mail с ключиком «-v».
(см. Как отправить письмо из консоли?)

Примичание 1: Авторизация на сервере методом auth plain
Если для отправки почты на сервере необходимо сначала авторизироваться, аутентификацию auth plain можно также
произвести telnet-ом. Для этого сразу после получения сервером ответа на HELO/EHLO необходимо отправить строку:

Код: Выделить всё

auth login

после этого следует отправить свой адрес e-mail*, а затем пароль, закодированный в base64.

*e-mail - это в большинстве случаев. Возможно ваш почтовый сервер авторизует по логину, или еще как-нибудь, но это
уже должно быть вам виднее.

Генерация строки авторизации:

Код: Выделить всё

 perl -MMIME::Base64 -e 'print encode_base64("\0user\@company.ru\0passwordl");'

Описание строки авторизации (http://www.lissyara.su/?id=1234):
Строка данных - закодирована base64, как требуется по RFC. Этот пример, после расшифровки, - ”<NUL>username<NUL>mysecret”, где ”<NUL>” - нулевой байт. Она разделяется на три строки, первая из которых - пустая.

За наводку на описание plain auth спасибо butch, IMB

Примичание 2: Авторизация на smtp-сервере методом CRAM-MD5
Качаем http://www.net-track.ch/opensource/cmd5/cmd5-0.1.tar.gz
Cобираем, как описано в README.

Синтаксис вызова cmd5 такой:

Код: Выделить всё

    ./cmd5 <username> <password> <challenge>
challenge - возвращенная сервером последовательность символов, закодированная в Base64.

Типичная сессия работы с smtp-сервером выглядит примерно так ("звездочкой" отмечены строки, вводимые клиентом):

Код: Выделить всё

      220 caraz.net-track.ch ESMTP
    * EHLO client
      250-caraz.net-track.ch
      250-AUTH LOGIN CRAM-MD5 PLAIN
      250-AUTH=LOGIN CRAM-MD5 PLAIN
      250-PIPELINING
      250 8BITMIME
    * AUTH CRAM-MD5

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

Код: Выделить всё

      334 PDMyLjEzMjM0MTIzQG1haWxob3N0Pg==

Эту последовательность, вместе с параметрами авторизации, передаем утилите cmd5:

Код: Выделить всё

    ./cmd5 foo@baar PaZZword PDMyLjEzMjM0MTIzQG1haWxob3N0Pg==
    :
    :
    base64 encoded: Zm9vQGJhYXIgM2I4YTc4ODZkNGYxNzFhNDIxMWZlODU5NDQ0MWZjZmI=

Полученный результат вводим в приглашении smtp-сервера:

Код: Выделить всё

    * Zm9vQGJhYXIgM2I4YTc4ODZkNGYxNzFhNDIxMWZlODU5NDQ0MWZjZmI=

Если имя пользователя/пароль верны, пользователь будет авторизован.
За аторизации cram-md спасибо danger08
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: FAQ по работе электронной почты и настройке серверов.

Сообщение Ленивая Бестолочь »

Какой дистрибутив взять для почтового сервера?

Выбор дистрибутива, а также "чего поставить на серверок?"
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: FAQ по работе электронной почты и настройке серверов.

Сообщение Ленивая Бестолочь »

Как отправить письмо из командной строки?

Echo "текст письма"| mail -s "тема письма" user1@domain.ru user2@domain.ru userN@domain.ru
http://www.opennet.ru/openforum/vsluhforumID1/35170.html

почтовый сервер на вашем компьютере, есстественно должен быть настроен при этом.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: FAQ по работе электронной почты и настройке серверов.

Сообщение Ленивая Бестолочь »

Как отправить письмо из командной строки с приложенным файлом?

http://linuxportal.ru/entry.php/86_0_3_0_C/
mail
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: FAQ по работе электронной почты и настройке серверов.

Сообщение Ленивая Бестолочь »

Как из консоли отправлять почту с моего адреса на mail.ru (yahoo.com/gmail.ru/....)?

Используйте программу msmtp.
http://www.opennet.ru/tips/info/1393.shtml
http://forum.root.ua/viewtopic.php?f=10&t=1139
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: FAQ по работе электронной почты и настройке серверов.

Сообщение Ленивая Бестолочь »

Метод борьбы со спамом - грейлистинг. что это и как сделать?

Этот метод основан на различных rfc, которым должны соответствовать MTA.
В кратце суть такова:
Когда вашему почтовому серверу приходит письмо он либо принимает его, либо возвращает ошибку. Коды ошибок означают их причины и степень тяжести.
Самы серьезные ошибки >= 500. В таком случае доставка этого письма прекращается и, обычно, не повторяется.
Есть ошибки "попроще" - четырехсотые. В случае возникновения такой ошибки будет предпринята попытка доставки письма через некоторое время.

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

Смысл в том, что таким условиям будут отвечать в основном "честные" MTA, а спамерские программы не делают попытку перепослать письмо.
На самом деле - это не совсем так. Есть спамеры, которые перепосылают, но их действительно сильно меньше, чем тех, которые этого не делают.

о graylist вообще (eng)
greylist в exim с помощью greylistd
greylist в exim
greylist в exim на debian wiki

Грейлистинг также умеет делать Policyd.
(за ссылку спасибо alfss)

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