Как настроить почтовый сервер Postfix с Dovecot

  1. Postfix Введение Этот туториал расскажет вам, как настроить базовый почтовый сервер, и немного расскажет...
  2. Настройка системы
  3. Настройка DNS
  4. Проверьте DNS
  5. постфикс
  6. пакеты
  7. Конфигурация Postfix
  8. Sane Alias ​​Config
  9. голубятня
  10. пакеты
  11. Конец
  12. продолжение

Postfix Введение

Этот туториал расскажет вам, как настроить базовый почтовый сервер, и немного расскажет о Postfix MTA (Mail Transfer Agent).

Postfix чрезвычайно гибок. Его архитектура основана на свободном составе служб, которые принимают электронные письма и передают их другим службам (с такими службами, как «smtp» на принимающем внешнем крае и «локальными» и «виртуальными» на доставляющем внешнем крае, если вы ' пересматриваю получение почты). Сам Postfix реализует основные требования для получения, маршрутизации и доставки почты, а остальное использует сторонние расширения.

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

Dovecot Введение

Я не собираюсь тратить много вводных слов на голубятню. Dovecot также огромен (вот вики для голубятни 2 ), но мы хотим лишь очень маленький набор функций от dovecot.

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

Этот учебник предполагает (и был построен с использованием) следующую настройку:

  • Debian 7.1 wheezy x64_86
  • Постфикс 2.9.6-2
  • голубятня 1: 2.1.7-7

В то время как любая ОС на основе Debian должна быть в порядке, Postfix используется в широком спектре версий, включая Postfix 1.x, Postfix 2.9 и Postfix 2.10, которые имеют некоторые несовместимые настройки и функции - и с использованием Postfix 2.9, это руководство не на кровоточащем краю.

Этот урок также предполагает несколько вещей о вас:

  • То, что вы чувствуете себя комфортно в командной строке GNU / Linux и с общим расположением и принципами работы системы GNU / Linux, такой как Debian.

  • Что ваша локальная система является GNU / Linux или разумно совместима (MinGW, Cygwin, Mac OS X, * BSD)

  • Что вы знаете, как получить корневую оболочку на вашей капле

  • Что вы знаете, как использовать текстовый редактор (например, vim, nano, emacs или стандартный редактор ed) в Linux
    По умолчанию команды вводятся, а файлы редактируются из корневой оболочки капли. Как и в большинстве других статей о DigitalOcean, части команд, которые необходимо настроить, будут выделены красным цветом.

Настройка системы

Следующие ингредиенты необходимы для того, чтобы ваша капля была готова стать почтовым сервером:

  • Домен, давайте предположим, что это "mydomain.com"

  • Имя хоста для вашего почтового сервера, допустим, «mail.mydomain.com»

  • Сертификат SSL, действительный для "mail.mydomain.com"

Для SSL вам нужен сертификат и закрытый ключ. В этом руководстве мы будем предполагать, что сертификат сохранен в /etc/ssl/certs/mailcert.pem, а ключ сохранен в /etc/ssl/private/mail.key. Убедитесь, что ключ доступен для чтения только пользователю root!

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

sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout /etc/ssl/private/mail.key -out /etc/ssl/certs/mailcert.pem

и оставив значения по умолчанию, просто нажав Enter на все заданные вопросы. Не используйте этот сертификат в производстве!

Большинство ЦС потребуют от вас отправить запрос на подпись сертификата. (CSR) Вы можете сгенерировать один такой:

sudo openssl req -nodes -days 365 -newkey rsa: 2048 -keyout /etc/ssl/private/mail.key -out mailcert.csr

Заполните запрашиваемую информацию надлежащим образом, как в следующей расшифровке: (Уточните в ЦС, который вы намереваетесь использовать, какую информацию необходимо указывать в CSR)

Создание 2048-битного закрытого ключа RSA ............................. +++ ........... ..... +++ запись нового закрытого ключа в «mail.key» ----- Вас попросят ввести информацию, которая будет включена в ваш запрос сертификата. То, что вы собираетесь ввести, это то, что называется отличительным именем или DN. Есть довольно много полей, но вы можете оставить некоторые пустыми. Для некоторых полей будет использоваться значение по умолчанию. Если вы введете «.», Поле останется пустым. ----- Название страны (двухбуквенный код) [AU]: Название штата или провинции США (полное название) [В некоторых штатах]: Название населенного пункта Вирджинии (например, город) []: Название организации Лэнгли (например, компании) [Internet Widgits Pty Ltd]: название организационного подразделения ассоциации сетевых служб (например, раздел) []: общее имя служб инфраструктуры (например, полное доменное имя сервера или ваше имя) []: адрес электронной почты mail.mydomain.com []: postmaster @ mydomain. com Пожалуйста, введите следующие «дополнительные» атрибуты, которые будут отправлены вместе с запросом сертификата. Пароль для вызова []: необязательное название компании []:

(Обратите внимание, что таким образом вы не сможете создать сертификат, действительный для более чем одного домена, используя поле subjectAltName без дополнительной работы - снова, проверьте документацию CA!)

Настройка DNS

Вам необходимо настроить DNS с записью A, которая указывает на IP-адрес вашего почтового сервера, и записью MX, которая указывает на имя хоста почтовых серверов.

Вот как это сделать, если вы используете DNS DigitalOcean:

  • Перейдите в область «DNS» на панели DigitalOcean.
  • Создайте новый домен или выберите тот, который вы создали ранее
  • Нажмите кнопку «Добавить запись» в правом верхнем углу
  • Добавить запись A:

Создайте новый домен или выберите тот, который вы создали ранее   Нажмите кнопку «Добавить запись» в правом верхнем углу   Добавить запись A:

  • Снова нажмите «Добавить запись» и добавьте запись MX, которая указывает на запись A:

Снова нажмите «Добавить запись» и добавьте запись MX, которая указывает на запись A:

Дополнительную информацию можно найти в Настройка имени хоста а также DNS советы и хитрости статьи.

Проверьте DNS

DNS будет распространяться через Интернет в течение нескольких часов, но через несколько минут он должен быть установлен на вашем DNS-сервере. Вы можете проверить с помощью dig & host :

[root @ yourbase] ~ # dig MX mydomain.com + короткий @ ns1.digitalocean.com 50 mail.mydomain.com. [root @ yourbase] ~ # host mail.mydomain.com ns1.digitalocean.com Использование сервера домена: Имя: ns1.digitalocean.com Адрес: 198.199.120.125 # 53 Псевдонимы: mail.mydomain.com имеет адрес 82.196.9.119

постфикс

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

пакеты

MTA по умолчанию в Debian - exim. Долой это! Мы также остановим постфикс после его установки, потому что мы не хотим, чтобы он еще работал.

aptitude удалить exim4 && aptitude установить postfix && postfix stop

Небольшая вставка: Postfix управляет своими демонами самостоятельно и не нуждается в сервисной (init.d) системе. постфиксный запуск, остановка постфикса и перезагрузка постфикса эквивалентны запуску постфикса службы, остановке постфикса службы и перезагрузке постфикса службы.

Конфигурация Postfix

Postfix имеет два основных конфигурационных файла: main.cf , который определяет то, что вы думаете о параметрах конфигурации, и master.cf , который определяет сервисы, которые должен запускать postfix.

Сначала настройте файл master.cf (в / etc / postfix /). Добавьте дополнительный экземпляр «smtpd» под названием «submission», который будет принимать почту от доверенных клиентов для доставки в мир в целом, который мы никому не разрешаем.
Для этого откройте master.cf (взгляните на человек 5 мастер если вы хотите понять, что происходит), раскомментируйте конфигурацию отправки и добавьте параметры для включения SASL:

представление инет п - - - - smtpd -o syslog_name = постфикс / представление -o smtpd_tls_wrappermode = нет -o smtpd_tls_security_level = шифровать -o smtpd_sasl_auth_enable = да -o smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, отвергает -o milter_macro_daemon_name = ПОСТУПАЮЩИЙ -o smtpd_sasl_type = голубятня - o smtpd_sasl_path = private / auth

Это требует небольшого объяснения. Опции -o ... переопределяют настройки, которые взяты из значений по умолчанию или определены в конфигурации, которую мы установим позже.
В двух словах, что здесь происходит, это то, что это позволяет демону «отправки» с TLS для защиты внешнего соединения, и SASL, опосредованный dovecot, для проверки имени пользователя и пароля подключающихся клиентов. (Мы установим это в dovecot позже).

Важная деталь, которую нельзя увидеть: отсутствует smtpd_recipient_restrictions reject_unauth_destination , который присутствует по умолчанию и ограничивает ретрансляцию.

Затем мы переходим к main.cf. Здесь мы начнем с чистого листа - запустите cp /etc/postfix/main.cf /etc/postfix/main.cf.orig, если вы хотите сохранить файл конфигурации по умолчанию (он также находится в / usr / share / postfix / хотя main.cf.dist), затем откройте его и очистите!

Давайте сначала установим информацию о сети: (информация о домене postfix обрабатывает почту, и немного дополнительной информации)

myhostname = mail.domain.com myorigin = / etc / mailname mydestination = mail.domain.com, domain.com, localhost, localhost.localdomain relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [:: 1] / 128 mailbox_size_limit = 0 receient_delimiter = + inet_interfaces = all

Мы устанавливаем имя хоста и источник по умолчанию, который получен из / etc / mailname в соответствии с соглашением debian. Вы можете установить его явно, если у вас нет / etc / mailname . Источник по умолчанию используется для создания адреса «От» для локальных пользователей. mydestination устанавливает домены, для которых postfix принимает сообщения электронной почты, в качестве конечного пункта назначения, и мы устанавливаем «relayhost» пустым, чтобы отключить ретрансляцию почты (ретрансляция означает прием почты и ее пересылку на почтовый сервер, который не является конечным пунктом назначения для почты, и нам это не нужно для этого это полезно, например, в корпоративной интрасети, где центральный почтовый сервер должен проверять почту, прежде чем она покинет сеть.)

Дополнительное примечание: это не имеет ничего общего с термином «открытый ретранслятор», который представляет собой почтовый сервер, который принимает электронную почту от кого-либо без аутентификации и отправляет ее MTA для доменов, которые не находятся в их собственной сети - для этого другой `relay_ используются настройки, которые мы оставляем по умолчанию и отключаем)

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

alias_maps = hash: / etc / aliases alias_database = hash: / etc / aliases

Затем мы устанавливаем SSL:

smtpd_tls_cert_file = /etc/ssl/certs/mailcert.pem smtpd_tls_key_file = /etc/ssl/private/mail.key smtpd_use_tls = да smtpd_tls_session_cache_database = ВТКЕЕ: $ {data_directory} / smtpd_scache smtp_tls_session_cache_database = ВТКЕЕ: $ {data_directory} / smtp_scache smtpd_tls_security_level = может smtpd_tls_protocols =! SSLv2,! SSLv3

Мы устанавливаем файл сертификата и ключ для него, включаем tls и устанавливаем файлы кэша. Затем мы делаем TLS необязательным, потому что нам не разрешено устанавливать TLS на общедоступном SMTP-сервере в соответствии с RFC2487 , Мы также запрещаем SSLv2 и SSLv3, так что разрешен только TLSv1.0 и выше (прочитайте учебник по SSL, если вы хотите узнать почему - вкратце, SSLv2 и SSLv3 устарели).

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

local_recipient_maps = proxy: unix: passwd.byname $ alias_maps

Этот параметр говорит Postfix проверять таблицу поиска и отклонять электронную почту для пользователей, которых нет в таблице. Это важно, потому что альтернативное поведение, если local_recipient_maps не задано, состоит в том, чтобы сначала принимать почту, а затем возвращать ее позже. Это вызывает «обратное рассеяние»: если postfix не может сразу определить всех действительных пользователей (в службе smtpd), например, когда local_recipients_maps не установлен, он примет почту, а затем отправит уведомление о недоставке (когда обнаружит, что почта не доставлена ​​после это было передано smptd). Эти уведомления о недоставке обычно поражают невинных людей, чьи адреса были подделаны в спаме и мошеннических письмах и способствуют проблеме спама.

Sane Alias ​​Config

Есть несколько почтовых учетных записей, которые вы должны настроить в своей конфигурации псевдонима, которые важны. Например, SMTP RFC требует, чтобы любой общедоступный почтовый сервер, который вообще принимает любую почту, также должен принимать почту на учетную запись «postmaster», и некоторые люди могут ожидать, что «hostmaster», «abuse», «webmaster» и другие почтовые ящики будут присутствовать. Вы можете перенаправить эти почтовые адреса как root, так и конкретному пользователю. Вот нормальное значение по умолчанию для / etc / aliases, при условии, что вы проверяете электронную почту на наличие root :

mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root злоупотребление: root

Если вы хотите перенаправить все это конкретному локальному пользователю, скажем, «ваше имя» просто добавьте

root: ваше имя

Postfix разрешит вам всю цепочку псевдонимов и перенаправит все эти почтовые адреса на «ваше имя». (Это сделано местный демон, использующий псевдонимы Спецификация.)

Как говорится в «aliases», после обновления файла / etc / aliases вы должны запустить

newaliases

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

голубятня

Этот будет меньше текстовой! Сделай глубокий вдох, мы почти закончили.

пакеты

aptitude установить dovecot-core dovecot-imapd

Должен сделать это. Если вы хотите все пакеты по умолчанию, запустите

aptitude установить dovecot-common

Затем перейдите в /etc/dovecot/dovecot.conf и снова очистите файл. (это важно на этот раз - конфигурация по умолчанию включает в себя набор подчиненных конфигурационных файлов в /etc/dovecot/conf.d, которые нам не нужны).

Теперь введите следующий конфиг:

disable_plaintext_auth = no mail_privileged_group = mail mail_location = mbox: ~ / mail: INBOX = / var / mail /% u userdb {driver = passwd} passdb {аргументы =% s драйвер = pam} протоколы = "imap"

Это включает аутентификацию в виде открытого текста (аутентификация в виде открытого текста будет проходить через TLS), говорит dovecot использовать группу почтовой системы для доступа к локальным почтовым ящикам (плюс местоположение почтовых ящиков), использовать систему аутентификации unix для аутентификации пользователей и включать только для imap

Если вы хотите, вы можете сделать так, чтобы dovecot автоматически добавлял папку «Корзина и отправленные» в почтовые ящики:

протокол imap {mail_plugins = "autocreate"} плагин {autocreate = корзина autocreate2 = отправлено autosubscribe = корзина autosubscribe2 = отправлено}

Затем нам нужно открыть сокет, который postfix может использовать для проверки подлинности dovecot:

аутентификация службы {unix_listener / var / spool / postfix / private / auth {group = postfix mode = 0660 user = postfix}}

И, наконец, конфиг ssl:

ssl = требуется ssl_cert = </etc/ssl/certs/mailcert.pem ssl_key = </etc/ssl/private/mail.key

Обратите внимание на угловые скобки! Они говорят dovecot читать из файла.

Конец

Сохраните и закройте все файлы конфигурации и выполните

newaliases постфикс запуска службы dovecot перезапустить

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

продолжение

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

Теперь вы можете проверить, что отправка электронной почты в обоих направлениях работает из терминала на дроплете:

~ # mail [email protected] Тема: тестовое письмо от postfix это тест. СРВ

Почта от [email protected] "должен в ближайшее время прийти" [email protected] "(введите адрес электронной почты, который вы контролируете, очевидно). Если вы ответите на него и снова позвоните, вы должны увидеть это: (может пройти минута, чтобы письмо пришло).

~ # mail Семейная реликвия mailx версия 12.5 20/20/10. Тип ? за помощью. "/ var / mail / root": 1 сообщение> N 1 Ваше имя Ср 13 ноября 23:45 41/1966 Re: тестовое письмо от postf

И если вы нажмете клавишу Enter, он покажет сообщение. (затем введите q и нажмите Enter, чтобы покинуть почтовый клиент)

То же самое будет работать с локальным почтовым клиентом. Настройте нового системного пользователя:

~ # adduser joe Добавление пользователя `joe '... Добавление новой группы` joe' (1001) ... Добавление нового пользователя `joe '(1001) с группой` joe' ... Создание домашнего каталога `/ home / joe ' ... Копирование файлов из `/ etc / skel '... Введите новый пароль UNIX: введите здесь пароль Повторите ввод нового пароля UNIX: введите пароль здесь passwd: пароль успешно обновлен Изменение информации о пользователе для joe Введите новое значение или нажмите ENTER по умолчанию полное имя []: номер комнаты []: рабочий телефон []: домашний телефон []: другое []: информация верна? [Да / Нет] Да

Пароль, который вы ввели здесь, является паролем для использования в электронной почте. Теперь Джо может использовать адрес [email protected] с локальным почтовым клиентом, таким как Thunderbird. В Thunderbird просто добавьте новую учетную запись (Файл -> Новая -> Существующая учетная запись почты) и введите [email protected] и пароль в диалоговом окне.

Если ваш почтовый клиент не может автоматически определить необходимые параметры: имя пользователя для подключения IMAP - joe, порт - 143, а методом проверки подлинности является незашифрованный пароль через STARTTLS. Для SMTP тоже самое, но порт 587.

Если что-то не работает, проверьте наличие сообщений об ошибках в системном журнале с tail -n 50 / var / log / syslog и в почтовом журнале с tail -n 50 /var/log/mail.log.

10. Тип ?