Найпростіший спосіб встановити захищений сервер електронної пошти, IMAP? [зачинено]


17

Я хотів би позбутися від Google як постачальника електронної пошти та створити повне рішення електронної пошти на своєму виділеному сервері. Проблема: Я хочу, щоб налаштування була максимально простою, щоб не було болю все налаштовувати заново, якщо є проблема.

Передумови

  • На пристрої лише один обліковий запис користувача.
    • (ім'я diti; головна електронна пошта kra@diti.me; інші псевдоніми переспрямовуються, але клієнт електронної пошти може керувати різними псевдонімами та реагувати відповідно)
  • Переважно не використовується MySQL.
    • (у випадку резервного копіювання та відновлення даних, а також для простоти, краще, якщо вам не доведеться встановлювати та захищати MySQL, перш ніж отримати функціональний сервер електронної пошти)
  • Доступ до електронної пошти (IMAP та SMTP) можна отримати ззовні.
  • Шифрування SSL / TLS для аутентифікації IMAP та SMTP (я використовую сертифікати CAcert , чи це має значення?).

Я вважаю, що простота, доступ до IMAP / SMTP та безпечний аутентифікат - це "основні" функції, які бажають усі, хто бажає покинути Google / що завгодно. Якщо я помиляюся і є більш просте рішення (наприклад, власне рішення, подібне до клауду, з усім включеним), я був би радий почути.

Я думаю, що поєднання Postfix та Dovecot було б найкращим шляхом. До речі, я запускаю Debian.

Інформація, яку я знайшов поки що

  • Французька стаття описує дуже довго докладно описано , як створити повний, безпечний електронної пошти рішення. Це довго, складніше в обслуговуванні, складніше резервне копіювання та відновлення тощо. Крім того, чи потрібен кеш DNS?
  • Вікі Gentoo ( Complete_Virtual_Mail_Server/SSL_Certificatesсторінка) згадує про використання сертифікатів CAcert, але про це не зрозуміло (чи потрібні всі ці SubjectAltNameсубдомени?), А також не використовує Postfix (я читав, що кур'єру складніше).
  • Різні навчальні посібники про самостійний хостинг, всі різні, рідко описують, чим вони займаються, і чому (електронна пошта, що розміщена власноруч, з віддаленим доступом, здається складною для налаштування, тож чому просто надавати список команд без пояснень для "манекенів?") .

Я сподіваюся, що я запитав правильні речі, і що вони не надто дурні.


1
Будь-яка ідея, як це питання можна переформулювати та повторно відкрити?
Діті

Відповіді:


19
  • Ні, не потрібно встановлювати кеш DNS на сервері. Сервер повинен використовувати кешуючий DNS-розв’язник, який знаходиться десь поруч, але більшість хостинг-компаній вже працюють за власними розв’язками для всього центру обробки даних і налаштовують сервери для їх використання за замовчуванням.

  • За замовчуванням і Postfix, і Dovecot використовують локальні акаунти для всього. Якщо у вас є ім’я облікового запису Linux diti, ви можете увійти в Dovecot за допомогою нього, і ви можете налаштувати Postfix для перевірки входів SMTP проти Dovecot .

  • Якщо у вас все в порядку, коли вся пошта переходить на один і той же обліковий запис, ви можете налаштувати прості псевдоніми (як у, /etc/aliases) для переадресації пошти для kra@або postmaster@на ditiрахунок.

  • Усі ці тематичні імена не потрібні. Єдине, що вам потрібно - це доменні імена, які ви фактично використовуєте , наприклад, 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/privateDebian їх зберігає.

Переконайтеся, що обидва файли належать 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.

# Політика
mynetworks = [:: 1] / 128, 127.0.0.0/8, [::ffff:127.0.0.0Sense/104
  # У цьому списку перераховані IP-адреси, які вважаються "довіреними" та можуть використовуватись
  # цей сервер для надсилання пошти назовні (тобто в інші домени). За
  # за замовчуванням, дозволено лише "localhost". Від усіх інших лише на пошту
  # доменів у $ mydestination буде прийнято.
mydestination = $ mydomain, localhost
  # Список доменів, на які можна приймати пошту, з будь-якої IP-адреси. 
# Доставка
alias_maps = хеш: / і т.д. / псевдоніми
  # Це зберігає псевдоніми для всієї системи. Це добре встановити чітко, тому що
  # значення за замовчуванням іноді включає NIS, що не має сенсу.
primaent_delimiter = +
  # Повідомляє постфікс, щоб розділити локальну частину адрес на першому "+",
  # так зване "плюс-адресація": пошта, надіслана до 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 = Пошта /

Настройте Dovecot використовувати той самий шлях у /etc/dovecot/conf.d/10-mail.conf:

mail_location = maildir: ~ / Пошта

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 .

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

auth {
    ...
    unix_listener / var / spool / postfix / private / auth {
        режим = 0660
        user = postfix
        група = постфікс
    }
    ...
}

І Postfix потрібно використовувати його - /etc/postfix/main.cfзнову ж таки:

# Аутентифікація
smtpd_sasl_type = голубець
smtpd_sasl_path = приватний / авт
  # Інший можливий тип - "cyrus", для "saslauthd" Cyrus SASL
  # демон. Тут я вибираю Dovecot, оскільки він добре працює як сервер SASL, і
  # просто простіше дозволити йому обробляти автентифікацію для обох демонів.

7. Зауважте, що вищезгадане ніде не встановлено smtpd_sasl_auth_enable. Поточна умова полягає у тому, щоб не включати SMTP auth у всьому світі, а зберігати tcp / 25 чисто як SMTP-порт «сервер-сервер». Тим часом нові повідомлення від користувачів приймаються через SMTP на порталі tcp / 587, "відправлення пошти", який вимагає автентифікації. Деякі провайдери навіть блокують tcp / 25 через спам, але тримають tcp / 587 відкритими, оскільки це, як правило, краще захищено.

Увімкніть порт "Надіслати" /etc/postfix/master.cf, з авт. SASL. У замовчуванні master.cfвже є необхідні рядки, які просто потрібно не коментувати, хоча деякі з них все ж залишатимуться поза межами.

подання inet 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 = дозвіл_sasl_authentication, відхилити
    # За замовчуванням primact_restrictions перевірити IP-адресу та
    # $ мідестинація. Для порту "Подання" дозвольте все, наскільки довго
    # як користувач увійшов у систему, але відхиляє всю анонімну пошту.
  -o milter_macro_daemon_name = ІНФОРМАЦІЯ
    # Якщо згодом ви вирішите встановити проксі-сервер 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щоразу, коли ви редагуєте цей файл.

Тепер у вас є ще один обліковий запис diti, що стосується Postfix та Dovecot, але пошту, на яку відправляють kra@..., також пересилають туди. Деякі поштові клієнти (наприклад, Thunderbird) підтримують декілька "посвідчень" або "персон" для одного поштового сервера, тому ви можете вибрати різні адреси "Від:".

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


1
Це чудово ! Це дійсно найпростіший підручник щодо самовлаштування електронної пошти. Частина, яка мене найбільше вразила, полягала в тому, що у пункті 1 я бачу, що я вже можу надсилати та отримувати електронні листи з / на мій сервер. У будь-якому разі я відредагую ваше повідомлення, щоб також уточнити деякі моменти! Однак мені не вдається налаштувати електронну пошту ззовні (я маю на увазі Thunderbird). Я використовую mail.diti.me(= IP-адресу мого сервера) як для IMAP, так і для SMTP, у моєму домені вже є записи MX. Чи зробив я щось неправильне під час налаштування свого сервера чи просто у мене проблеми з Thunderbird?
Діті

@Diti: Схоже , всі відповідні порти (для TCP / 25) , за винятком є брандмауерів на вашому сервері.
користувач1686

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

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

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