17

Я хотел бы избавиться от Google как поставщика услуг электронной почты и настроить полное решение для электронной почты на моем выделенном сервере. Проблема: я бы хотел, чтобы настройка была максимально простой, чтобы не возникало проблем с настройкой заново в случае возникновения проблемы.

Предпосылки

  • Только одна учетная запись пользователя на машине.
    • (имя diti ; основной адрес электронной почты kra@diti.me ; другие псевдонимы перенаправляются, но почтовый клиент может управлять различными псевдонимами и реагировать соответствующим образом)
  • Предпочтительно не использует 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 ответ1

19
  • Нет, для настройки 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 качестве имени почты. На этом этапе вы уже можете отправлять и получать почту как diti@diti.me и, возможно, даже подключаться к 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. Автоматически сгенерированный Debian Postfix main.cf тоже немного запутан, поэтому я просто опубликую очищенную минимальную версию:

# Server information
mydomain = diti.me
myorigin = $mydomain
  # Various other parameters use these two variables as default values.

# SMTP service
smtpd_tls_security_level    = may
smtpd_tls_cert_file         = /etc/ssl/private/diti.me-mail.pem
smtpd_tls_key_file          = /etc/ssl/private/diti.me-mail.key
  # This allows STARTTLS to be used on all incoming SMTP connections.
  # Note that `postfix` must be added to the `ssl-cert` group to be able
  # to access files in /etc/ssl/private.

# Policies
mynetworks = [::1]/128, 127.0.0.0/8, [::ffff:127.0.0.0]/104
  # This lists the IP addresses that are considered "trusted" and can use
  # this server to send mail to the outside (i.e. to other domains). By
  # default, only "localhost" is allowed. From everyone else only mail to
  # domains in $mydestination will be accepted.
mydestination = $mydomain, localhost
  # List of domains to accept mail for, from any IP address.
# Delivery
alias_maps = hash:/etc/aliases
  # This keeps system-wide aliases. It's good to set it explicitly because
  # the default value sometimes includes NIS, which doesn't make sense.
recipient_delimiter = +
  # Tells postfix to split the local part of addresses at the first '+',
  # so-called "plus-addressing": mail sent to diti+foo@ will be delivered
  # to the diti@ mailbox.

Для Dovecot, Debian просто использует примеры конфигурации по умолчанию, и они достаточно хороши, с каждой описанной опцией.

Всякий раз, когда вы меняете конфигурацию, перезагружайте демонов с postfix reload и / или doveadm reload .

4. По умолчанию Postfix доставляет почту в /var/mail/$USER в формате mbox , который достаточно прост (вы можете легко просмотреть его в текстовом редакторе), но имеет много проблем, особенно с IMAP, так как весь файл должен быть переписывается всякий раз, когда вы перемещаете сообщение или даже помечаете его как "прочитанное" или "непрочитанное".

Измените оба демона, чтобы использовать Maildir. (Существуют и другие форматы, но они, как правило, специфичны для сервера MTA, MDA, IMAP или любого другого; Maildir широко поддерживается.)

В /etc/postfix/main.cf добавьте следующее в раздел "Доставка":

home_mailbox = Mail/

Настройте 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 = yes

ssl_cert = </etc/ssl/private/diti.me-mail.pem
ssl_key  = </etc/ssl/private/diti.me-mail.key

6. Теперь вы можете отправлять почту на улицу и получать ее. Это по - прежнему необходимо настроить Postfix , чтобы позволить вам отправить снаружи соединяясь с почтовым клиентом по протоколу SMTP.

Сначала скажите Postfix использовать Dovecot для проверки логинов. Следующие инструкции в основном взяты из вики Dovecot.

/etc/dovecot/conf.d/10-master.conf Dovecot должен прослушивать сокет, к которому Postfix может получить доступ; конфигурация по умолчанию уже имеет закомментированный пример:

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

И Postfix должен использовать его - /etc/postfix/main.cf снова:

# Authentication
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
  # The other possible type is "cyrus", for the Cyrus SASL 'saslauthd'
  # daemon. I choose Dovecot here since it works well as a SASL server, and
  # it is just simpler to let it handle authentication for both daemons.

7. Обратите внимание, что выше нигде не установлен smtpd_sasl_auth_enable . В настоящее время принято не включать глобальную аутентификацию SMTP, а хранить tcp/25 исключительно как SMTP-порт «сервер-сервер». Между тем новые сообщения от пользователей принимаются через SMTP по tcp/587, порту "отправки почты", который требует аутентификации. Некоторые провайдеры даже блокируют tcp/25 из-за спама, но оставляют tcp/587 открытым, так как обычно он лучше защищен.

Включите порт "Submission" в /etc/postfix/master.cf с аутентификацией SASL. В стандартном master.cf уже есть необходимые строки, которые просто необходимо оставить без комментариев, хотя некоторые из них все же следует пропустить.

submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
    # The "Submission" port will require TLS, instead of making it optional
  -o smtpd_sasl_auth_enable=yes
    # ...as well as allow users to log in.
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
    # These four options can be left commented out; if enabled, they would
    # expect you to set custom restriction rules in 'main.cf', but the
    # default ones are just fine.
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
    # The default recipient_restrictions check the IP address and
    # $mydestination. For the "Submission" port, allow everything as long
    # as the user is logged in, but reject all anonymous mail.
  -o milter_macro_daemon_name=ORIGINATING
    # If you later decide to set up a DKIM proxy or such, this will allow
    # it to distinguish user-submitted mails from received incoming ones.
    # It's part of the default configuration, therefore included here too.

Если у вас есть почтовый клиент , который требует старого стиля порта "неявного SSL" (TCP /465), вы можете раскомментировать smtps линию в master.cf - если вы делаете, сохранить настройки , похожие на тот порта submission

8. Наконец, настройте псевдонимы для вашей учетной записи, отредактировав /etc/aliases . Псевдоним postmaster мастера в основном требуется; это точка контакта, если есть проблемы с вашим почтовым сервером. Указывать root и другие подобные псевдонимы тоже хорошо.

Базовый формат задокументирован в псевдонимах (5):

postmaster: root
admin:      root
root:       diti
kra:        diti

Используйте postalias или newaliases для обновления хешированной базы данных /etc/aliases.db каждый раз, когда вы редактируете этот файл.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .