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


17

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

Предпосылки

  • Только одна учетная запись пользователя на машине.
    • (name diti; main e-mail kra@diti.me; другие псевдонимы перенаправляются, но почтовый клиент может управлять различными псевдонимами и реагировать соответственно)
  • Предпочтительно не использует MySQL.
    • (в случае резервного копирования и восстановления данных, а также для простоты, лучше, если не нужно устанавливать и защищать MySQL, прежде чем получить функциональный почтовый сервер)
  • Электронная почта может быть доступна (IMAP и SMTP) извне.
  • Шифрование SSL / TLS для аутентификации IMAP и SMTP (я использую сертификаты CAcert , это имеет значение?).

Я считаю, что простота, доступ по протоколу IMAP / SMTP и безопасная аутентификация - это «основные» функции, которые каждый, кто хочет покинуть Google или что-то еще, захочет. Если я ошибаюсь и есть более простое решение (например, решение, похожее на ownCloud, со всем включенным), я был бы рад услышать.

Я думаю, что комбинация Postfix и Dovecot была бы подходящим вариантом. Кстати, я использую Debian.

Информация, которую я нашел до сих пор

  • Французская статья описывает очень долго подробно описано , как создать полный, безопасный электронной почты решение. Он длинный, сложный в обслуживании, сложный для резервного копирования и восстановления и т. Д. Кроме того, необходим ли кэш DNS?
  • Вики- Complete_Virtual_Mail_Server/SSL_Certificatesстраница Gentoo ( страница) упоминает об использовании сертификатов CAcert, но не совсем ясно (нужны ли все эти SubjectAltNameсубдомены?) И не использует Postfix (я читал, что Courier сложнее).
  • Различные учебные пособия о самостоятельном размещении, все разные, редко описывающие, что они делают и почему (самостоятельное размещение электронной почты с удаленным доступом кажется сложным в настройке, так почему бы просто предоставить список команд без объяснения «чайников»?) ,

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


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

# Информация о сервере
mydomain = diti.me
myorigin = $ mydomain
  # Различные другие параметры используют эти две переменные в качестве значений по умолчанию.

# 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.

# Политики
mynetworks = [:: 1] / 128, 127.0.0.0/8, [::ffff:127.0.0.0]/104
  # Здесь перечислены IP-адреса, которые считаются «доверенными» и могут использоваться
  # этот сервер для отправки почты извне (т.е. в другие домены). По
  # default, разрешен только "localhost". От всех остальных только почта на
  # домены в $ mydestination будут приняты.
mydestination = $ mydomain, localhost
  # Список доменов для приема почты с любого IP-адреса. 
# Доставка
alias_maps = hash: / etc / aliases
  # Это сохраняет общесистемные псевдонимы. Хорошо установить это явно, потому что
  # значение по умолчанию иногда включает NIS, что не имеет смысла.
receient_delimiter = +
  # Говорит postfix, чтобы разделить локальную часть адресов на первый «+»,
  # так называемая «плюс-адресация»: почта, отправленная на diti + foo @, будет доставлена
  # к почтовому ящику diti @

Для 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 = да

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 = dovecot
smtpd_sasl_path = private / auth
  # Другой возможный тип - "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уже есть необходимые строки, которые просто необходимо оставить без комментариев, хотя некоторые из них все же следует пропустить.

представление инет n - - - - smtpd
  -o syslog_name = постфикс / представление
  -o smtpd_tls_security_level = шифровать
    # Порту "Submission" потребуется 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 = allow_sasl_authenticated, отклонить
    # Defaultient_restrictions проверяет IP-адрес и
    # $ мое предназначение. Для порта "Submission" разрешите все как можно дольше
    # как пользователь вошел в систему, но отклонить всю анонимную почту.
  -o milter_macro_daemon_name = ORIGINATING
    # Если вы позже решите настроить прокси-сервер DKIM или что-то подобное, это позволит
    # это, чтобы отличить отправленные пользователем письма от полученных входящих.
    # Это часть конфигурации по умолчанию, поэтому включена и здесь.

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

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

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


1
Это здорово ! Это действительно самый простой урок о самостоятельном размещении электронной почты. Больше всего меня поразило то, что в момент 1 я действительно мог уже отправлять и получать электронную почту с моего сервера. В любом случае, я отредактирую ваше сообщение, чтобы уточнить некоторые моменты тоже! Однако я не могу настроить свою электронную почту извне (я имею в виду Thunderbird). Я использую mail.diti.me(= IP-адрес моего сервера) для IMAP и SMTP, мой домен уже имеет записи MX. Я сделал что-то не так во время установки моего сервера, или у меня просто проблемы с Thunderbird?
Дити

@Diti: Похоже, что все соответствующие порты (кроме tcp / 25) брандмауэром на вашем сервере.
user1686

Каким должен ps auxw | grep "dovecot"быть выход ? Я сравнил с одним из сложных настроек одного из моих друзей, и у него есть, dovecot-authа imap-loginу меня нет. Возможно ли, что порты действительно открыты (я не помню, чтобы я использовал брандмауэр), но без демона, настроенного на прослушивание этих портов извне, или что-то еще? Когда я запускаю openssl s_client -connect mail.diti.me:993на сервере, он работает (и говорит «Dovecot готов.»), Но ничего снаружи. Может быть, я должен попытаться установить брандмауэр и явно разрешить эти порты?
Дити

@Diti: архитектура Dovecot в значительно изменилось между v1 и v2, так что вы будете видеть различные процессы - в v2, там будет dovecot, dovecot/anvil, dovecot/logи другие. Кроме того, некоторые процессы запускаются только при подключении или только при проверке деталей аутентификации.
user1686 15.06.13

1
@Diti: Нет, оба демона по умолчанию слушают все интерфейсы и все адреса. Но соединениям не отказывают - скорее, сервер тихо отбрасывает все попытки соединения (см. Сканирование nmap, с которым я связан), что является верным признаком брандмауэра где-то. Попробуйте использовать, iptables -n -v -Lчтобы проверить, есть ли какие-либо правила для отбрасывания пакетов.
user1686
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.