Поиск по сайту:

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


Постфикс Введение

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

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

Postfix имеет несколько сотен man 5 postconf). Одного этого руководства недостаточно, чтобы вы стали компетентным профессиональным администратором электронной почты. Однако, если вы хотите познакомиться с 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, которые имеют некоторые несовместимые друг с другом настройки и функции. находится не на краю пропасти.

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

  • Что вам удобно работать с командной строкой GNU/Linux и с общей компоновкой и принципами работы системы GNU/Linux, такой как Debian.
  • Что ваша локальная система является GNU/Linux или разумно совместимой (MinGW, Cygwin, Mac OS X, *BSD)
  • Что вы знаете, как получить rootshell на своем дроплете
  • Что вы знаете, как использовать текстовый редактор (например, vim, nano, emacs или стандартный редактор ed) в Linux.

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

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

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

  • Домен, предположим, что это \mydomain.com
  • Имя хоста для вашего почтового сервера, допустим \mail.mydomain.com
  • SSL-сертификат, действительный для \mail.mydomain.com

Настройка SSL-сертификата

Для SSL вам нужен сертификат и закрытый ключ. В этом руководстве мы предполагаем, что сертификат сохранен в /etc/ssl/certs/mailcert.pem, а ключ сохранен в /etc/ssl/private/mail. .ключ. Убедитесь, что ключ доступен для чтения только пользователю 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)

Generating a 2048 bit RSA private key
.............................+++
................+++
writing new private key to 'mail.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: US
State or Province Name (full name) [Some-State]: Virginia
Locality Name (eg, city) []: Langley
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Network Services Association
Organizational Unit Name (eg, section) []: Infrastructure Services
Common Name (e.g. server FQDN or YOUR name) []: mail.mydomain.com
Email Address []: postmaster@mydomain.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

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

Настройка DNS

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

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

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

  • Снова нажмите \Добавить запись и добавьте запись MX, указывающую на запись A:

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

Подтвердить DNS

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

[root@yourbase] ~# dig MX mydomain.com +short @ns1.linux-console.net
50 mail.mydomain.com.
[root@yourbase] ~# host mail.mydomain.com ns1.linux-console.net
Using domain server:
Name: ns1.linux-console.net
Address: 198.199.120.125#53
Aliases:

mail.mydomain.com has address 82.196.9.119

Постфикс

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

Пакеты

MTA по умолчанию в Debian — Exim. Прочь! Мы также остановим postfix после того, как он будет установлен, потому что мы не хотим, чтобы он еще работал.

aptitude remove exim4 && aptitude install postfix && postfix stop

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

Конфигурация постфикса

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

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

submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_wrappermode=no
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth

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

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

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

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

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
recipient_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=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_security_level=may
smtpd_tls_protocols = !SSLv2, !SSLv3

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

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

local_recipient_maps = proxy:unix:passwd.byname $alias_maps

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

Разумная конфигурация псевдонима

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

mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root

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

root: yourname

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

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

newaliases

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

Голубятня

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

Пакеты

aptitude install dovecot-core dovecot-imapd

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

aptitude install 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 {
  args = %s
  driver = pam
}
protocols = " imap"

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

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

protocol imap {
  mail_plugins = " autocreate"
}
plugin {
  autocreate = Trash
  autocreate2 = Sent
  autosubscribe = Trash
  autosubscribe2 = Sent
}

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

service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
}

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

ssl=required
ssl_cert = </etc/ssl/certs/mailcert.pem
ssl_key = </etc/ssl/private/mail.key

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

Конец

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

newaliases
postfix start
service dovecot restart

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

Продолжение

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

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

~# mail someotheremail@gmail.com
Subject: test email from postfix
this is a test
.
EOT

Письмо от \root@gmail.com (очевидно, укажите адрес электронной почты, которым вы управляете). Если вы ответите на него и снова позвоните в почту, вы должны увидеть это: (почта может прийти через минуту) .

~# mail
Heirloom mailx version 12.5 6/20/10.  Type ? for help.
"/var/mail/root": 1 message
>N  1 Your Name          Wed Nov 13 23:45   41/1966  Re: test email from postf

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

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

~# adduser joe
Adding user `joe' ...
Adding new group `joe' (1001) ...
Adding new user `joe' (1001) with group `joe' ...
Creating home directory `/home/joe' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: Enter password here
Retype new UNIX password: Enter password here
passwd: password updated successfully
Changing the user information for joe
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y

Введенный здесь пароль является паролем для электронной почты. Джо теперь может использовать адрес joe@yourdomain.com с локальным почтовым клиентом, таким как Thunderbird. В Thunderbird просто добавьте новую учетную запись (Файл -> Создать -> Существующая учетная запись электронной почты) и введите joe@yourdomain.com и пароль в диалоговом окне.

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

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

Представлено: Лукасом Эрлахером