Самый простой способ настроить безопасный почтовый сервер IMAP?

Самый простой способ настроить безопасный почтовый сервер IMAP?

Я хотел бы избавиться от 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каждый раз при редактировании этого файла.

Теперь у вас по-прежнему есть одна учетная запись, которая называется ditiPostfix и Dovecot, но почта, отправленная на, kra@...также пересылается туда. Некоторые почтовые клиенты (например, Thunderbird) поддерживают несколько "идентификаторов" или "персон" для одного почтового сервера, поэтому вы можете выбирать между разными адресами "От:".

Вот и все. Возможно, позже я вернусь с инструкциями по procmail, виртуальным доменам, SPF и/или DKIM.

Связанный контент