
Я хотел бы избавиться от Google как поставщика электронной почты и настроить полное решение электронной почты на моем выделенном сервере. Проблема: Я хочу, чтобы настройка была максимально простой, чтобы не было мучений по настройке всего заново, если возникнут проблемы.
Предпосылки
- На машине только одна учетная запись пользователя.
- (имя
diti
; основной адрес электронной почты[email protected]
; другие псевдонимы перенаправляются, но почтовый клиент может управлять различными псевдонимами и реагировать соответствующим образом)
- (имя
- Предпочтительно не использовать MySQL.
- (в случае резервного копирования и восстановления данных, а также для простоты лучше не устанавливать и не защищать MySQL до получения функционального почтового сервера)
- К электронной почте можно получить доступ (IMAP и SMTP) извне.
- Шифрование SSL/TLS для аутентификации IMAP и SMTP (я используюCAcertсертификаты, имеет ли это значение?).
Я считаю, что простота, доступ IMAP/SMTP и безопасная аутентификация — это «базовые» функции, которые хотел бы иметь каждый, кто хочет уйти от Google/чего-либо еще. Если я ошибаюсь и есть более простое решение (например, решение типа ownCloud, включающее все), я был бы рад услышать.
Я думаю, что комбинация Postfix и Dovecot будет правильным решением. Кстати, я использую Debian.
Информация, которую я нашел на данный момент
- АСтатья на французском языкеописывает воченьдлинные подробности о том, как настроить полное, безопасное решение для электронной почты. Это долго, сложнее поддерживать, сложнее делать резервные копии и восстанавливать и т. д. Кроме того, необходим ли кэш DNS?
- В вики Gentoo (
Complete_Virtual_Mail_Server/SSL_Certificates
страница) упоминается использование сертификатов CAcert, но нет ясности по этому поводу (SubjectAltName
нужны ли все эти поддомены?), и не используется Postfix (я читал, что Courier сложнее). - Различные руководства по самостоятельному размещению, все разные, редко описывающие то, что они делают ипочему(настройка собственной электронной почты с удаленным доступом кажется сложной, так зачем же просто предоставлять список команд без объяснений для «чайников»?).
Надеюсь, я задал правильные вопросы и они не слишком глупые.
решение1
Нет, настраивать DNS-кэш на сервере не требуется. Сервердолжениспользуйте кэширующий DNS-резолвер, который находится где-то поблизости, но большинство хостинговых компаний уже используют собственные резолверы для всего центра обработки данных и настраивают серверы на их использование по умолчанию.
По умолчанию и Postfix, и Dovecot используют локальные учетные записи для всего. Если у вас есть учетная запись Linux с именем
diti
, вы можете войти в Dovecot с ее помощью, и вы можете настроить Postfix напроверка логинов SMTP с помощью Dovecot.Если вас устраивает отправка всей почты на одну учетную запись, вы можете настроить простые псевдонимы (например,
/etc/aliases
), чтобы перенаправлять почту на учетную записьkra@
илиpostmaster@
для нееditi
.Все эти subjectAltNames не нужны. Единственное, что вам нужно, это для доменных имен, которые вы собираетесь на самом делеиспользовать, например
mail.diti.me
илиglaux.diti.me
. Я не уверен, нужно ли включать сам домен (напримерditi.me
).
Ниже предполагается, что домен уже имеет записи MX, настроенные на указание на этот сервер. Я обычно стараюсь сохранять свою конфигурацию достаточно ясной, так как я всегда в конечном итоге задаюсь вопросом «что, черт возьми, это для чего?» несколько месяцев спустя.
1.Сначала установите пакеты postfix
и dovecot-imapd
. Когда появится запрос о конфигурации Postfix, выберите опцию "Интернет-сайт" и введите diti.me
в качестве имени почты. На этом этапе вы уже можете отправлять и получать почту как [email protected]
, и, возможно, даже подключаться к IMAP.
Однако в нем пока нет SSL, нет возможности отправлять почту по SMTP извне и нет разумного места для хранения почты (по умолчанию используется файл mbox в формате /var/mail
, что ненадежно и обеспечивает низкую производительность, особенно при использовании IMAP).
2.Если у вас уже есть SSL-сертификат, поместите его в /etc/ssl/private/diti.me.pem
, а закрытый ключ в /etc/ssl/private/diti.me.key
. Точное местоположение на самом деле не имеет значения, главное, /etc/ssl/private
чтобы Debian хранил их там.
Убедитесь, что оба файла принадлежат ssl-cert
группе и доступны для чтения, чтобы Postfix и Dovecot могли получить к ним доступ. Также добавьте учетные записи обоих демонов в эту группу с помощью gpasswd -a
.
3.Автоматически сгенерированный Postfix в Debian main.cf
тоже немного беспорядочен, поэтому я просто опубликую очищенную минимальную версию:
# Информация о сервере мойдомен = diti.me myorigin = $мойдомен # Различные другие параметры используют эти две переменные в качестве значений по умолчанию. # SMTP-сервис smtpd_tls_security_level = может smtpd_tls_cert_file = /etc/ssl/private/diti.me-mail.pem smtpd_tls_key_file = /etc/ssl/private/diti.me-mail.key # Это позволяет использовать STARTTLS для всех входящих SMTP-подключений. # Обратите внимание, что `postfix` необходимо добавить в группу `ssl-cert`, чтобы иметь возможность # для доступа к файлам в /etc/ssl/private. # Политики моисети = [::1]/128, 127.0.0.0/8, [::ffff:127.0.0.0]/104 # Здесь перечислены IP-адреса, которые считаются «доверенными» и могут использовать # этот сервер для отправки почты наружу (т.е. на другие домены). # по умолчанию разрешено только "localhost". От всех остальных только почта # доменов в $mydestination будут приняты. моеназначение = $мойдомен, локальныйхост # Список доменов, для которых необходимо принимать почту с любого IP-адреса. # Доставка alias_maps = хэш:/etc/aliases # Это сохраняет общесистемные псевдонимы. Хорошо установить это явно, потому что # значение по умолчанию иногда включает NIS, что не имеет смысла. разделитель_получателя = + # Сообщает postfix о необходимости разбить локальную часть адреса на первом «+», # так называемая «плюс-адресация»: почта, отправленная на diti+foo@, будет доставлена # на почтовый ящик diti@.
Для Dovecot Debian просто использует примеры конфигураций по умолчанию, и они достаточно хороши, с описанием каждой опции.
При каждом изменении конфигурации перезагружайте демоны с помощью postfix reload
и/или doveadm reload
.
4.По умолчанию Postfix доставляет почту /var/mail/$USER
вмбоксФормат достаточно прост (его можно легко просмотреть с помощью текстового редактора), но имеет много проблем, особенно с IMAP, поскольку весь файл приходится перезаписывать всякий раз, когда вы перемещаете сообщение или даже отмечаете его как «прочитанное» или «непрочитанное».
Измените оба демона на использование Maildir. (Существуют и другие форматы, но они, как правило, специфичны для сервера MTA, MDA или IMAP или чего-то еще; Maildir широко поддерживается.)
В /etc/postfix/main.cf
разделе «Доставка» добавьте следующее:
домашний_почтовый_ящик = Почта/
Настройте Dovecot для использования того же пути в /etc/dovecot/conf.d/10-mail.conf
:
mail_location = maildir:~/Mail
5.В какой-то момент вам нужно будет указать Dovecot использовать SSL. Соответствующие настройки находятся в /etc/dovecot/conf.d/10-ssl.conf
. Фактически, пакет Debian для Dovecotужеиспользует SSL, хотя и с самоподписанным сертификатом, который в основном бесполезен. Настройте его на использование собственного сертификата:
ssl = да ssl_cert = </etc/ssl/private/diti.me-mail.pem ssl_key = </etc/ssl/private/diti.me-mail.key
6.Теперь вы можете отправлять почту наружу и получать ее. Все еще необходимо настроить Postfix, чтобы разрешить вам отправлятьотснаружи, подключившись к своему почтовому клиенту по SMTP.
Сначала скажите Postfix использовать Dovecot для проверки логинов. Следующие инструкции в основном взяты изВики Dovecot.
Dovecot /etc/dovecot/conf.d/10-master.conf
необходимо прослушивать сокет, к которому Postfix может получить доступ; в конфигурации по умолчанию уже есть закомментированный пример:
сервис аутентификации { ... unix_listener /var/spool/postfix/private/auth { режим = 0660 пользователь = постфикс группа = постфикс } ... }
И Postfix снова должен его использовать /etc/postfix/main.cf
:
# Аутентификация smtpd_sasl_type = голубятня smtpd_sasl_path = приватный/аутентификация # Другой возможный тип — «cyrus», для Cyrus SASL «saslauthd» # демон. Я выбрал Dovecot, так как он хорошо работает как сервер SASL, и # просто проще позволить ему обрабатывать аутентификацию для обоих демонов.
7.Обратите внимание, что вышеприведенное smtpd_sasl_auth_enable
нигде не установлено. Текущая конвенция заключается в том, чтобынетвключить аутентификацию SMTP глобально, но оставить tcp/25 исключительно как порт SMTP "сервер-сервер". Между тем, новые сообщения от пользователей принимаются по SMTP на tcp/587, порт "отправки почты", который требует аутентификации. Некоторые интернет-провайдеры даже блокируют tcp/25 из-за спама, но оставляют tcp/587 открытым, поскольку он обычно лучше защищен.
Включите порт "Submission" в /etc/postfix/master.cf
, с аутентификацией SASL. По умолчанию master.cf
уже есть необходимые строки, которые нужно просто раскомментировать, хотянекоторыйиз них все равно следует исключить.
представление inet n - - - - smtpd -o syslog_name=постфикс/отправка -o smtpd_tls_security_level=шифровать # Порт «Отправка» будет требовать TLS, а не делать его необязательным -o smtpd_sasl_auth_enable=да # ...а также разрешить пользователям входить в систему. # -o smtpd_reject_unlisted_recipient=нет # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # Эти четыре параметра можно оставить закомментированными; если они включены, они будут # ожидайте, что вы установите пользовательские правила ограничения в 'main.cf', но # стандартные вполне подойдут. -o smtpd_recipient_restrictions=permit_sasl_authenticated,отклонить # Ограничения по умолчанию для получателя проверяют IP-адрес и # $mydestination. Для порта "Отправка" разрешите все, пока # так как пользователь вошел в систему, но отклонять всю анонимную почту. -o milter_macro_daemon_name=ИСХОДНЫЙ # Если позже вы решите настроить прокси-сервер DKIM или что-то подобное, это позволит # чтобы отличать отправленные пользователем письма от полученных входящих. # Это часть конфигурации по умолчанию, поэтому она также включена сюда.
Если у вас есть почтовый клиент, которому требуется порт старого образца «неявного SSL» (tcp/465), вы можете раскомментировать строки. smtps
В master.cf
этом случае сохраните настройки, аналогичные настройкам submission
порта.
8.Наконец, настройте псевдонимы для своей учетной записи, отредактировав /etc/aliases
. postmaster
Псевдоним в основном необходим; это точка контакта, если возникнут проблемы с вашим почтовым сервером. Указание root
и другие подобные псевдонимы тоже хороши.
Базовый формат задокументирован в aliases(5):
postmaster: root
admin: root
root: diti
kra: diti
Используйте postalias
или newaliases
для обновления хешированной базы данных /etc/aliases.db
каждый раз при редактировании этого файла.
Теперь у вас по-прежнему есть одна учетная запись, которая называется diti
Postfix и Dovecot, но почта, отправленная на, kra@...
также пересылается туда. Некоторые почтовые клиенты (например, Thunderbird) поддерживают несколько "идентификаторов" или "персон" для одного почтового сервера, поэтому вы можете выбирать между разными адресами "От:".
Вот и все. Возможно, позже я вернусь с инструкциями по procmail, виртуальным доменам, SPF и/или DKIM.