Как мне настроить почтовый сервер?

59

Мой VPS работает под управлением Ubuntu, и я хотел бы иметь возможность получать электронную почту на мой домен.

Как мне легко настроить почтовый сервер для этого?

Стефано Палаццо
источник
3
Отличный вопрос, я жду отличного ответа. Я построил несколько почтовых серверов за эти годы, и это никогда не было легко. Множество решений: какой SMS-сервер, какой IMAP / POP, как хранить почту, как хранить пользователей ... Я не могу дать простой ответ.
Хавьер Ривера

Ответы:

48

Вот как я настроил почту на наших производственных машинах. Вот те критерии, которые нам нужны:

  • Аккаунты электронной почты
  • Псевдонимы электронной почты (экспедиторы)
  • IMAP, POP3 и SMTP

"Легко" (тл; др)

Во-первых, я хочу обратиться к тому, что кажется самым простым решением.

sudo tasksel install mail-server

Когда мы попробовали это, возникли некоторые проблемы: во-первых, он устанавливает Dovecot, что хорошо для большинства, но мы сочли Courier лучшим из двух для наших нужд. Во-вторых, он использует Postfix, что замечательно, но нам также нужен Exim, поскольку это более мощный сервер MTA / SMTP. В-третьих, он устанавливает MySQL - в конфигурации, которую я использую, мы предпочитаем плоские файлы для конфигурации, так как это на одну точку разрыва меньше. Подумайте, что случится, если MySQL потерпит крах по неизвестной причине. В остальном остальные пакеты довольно просты и просты в обслуживании для небольшой почтовой службы (всего 1-2 почтовых домена).

Наша Конфигурация

Структура каталогов

Мы немного отклоняемся от пути обычных конфигураций, но это облегчает управление.

Вся наша почта хранится в /var/mail/virtual/<domain>/<user>/mailТаким образом , для примеров будущих я буду использовать email@example.com, fwd@example.com, foo@example.comчтобы представить адрес электронной почты, форвардер , чтобы пойти example@gmail.comи плохой адрес соответственно. В приведенном выше примере это будет /var/mail/virtual/example.com/email/mail.

Я также поддерживаю список всех доменов на сервере, /etc/valiasesно об этом позже.

постфикс

Это более или менее простая часть установки. Просто установите postfixпакет.

Exim

Установите exim с apt-get install exim4 exim4-base exim4-config exim4-daemon-heavyПосле установки вам нужно будет отредактировать конфигурацию exim по умолчанию, чтобы заменить или добавить следующие значения:

domainlist local_domains = @:localhost:dsearch;/etc/valiases:dsearch;/var/mail/virtual
daemon_smtp_ports = smtp : 587 : 465
MAIN_TLS_ENABLE = yes

(Эти строки появятся в разных частях файла, замените каждую соответственно)

После завершения перестройте конфигурацию exim с помощью. На update-exim4.confэтом завершаются изменения, необходимые для exim.

курьер

Установите Courier с courier-baseэтим необходимо установить courier-authdaemon, courier-authlib*, courier-imap*, courier-pop*, courieruserinfo,courier-ssl

Там, честно говоря, не так много конфигурации вне стандарта. Вам просто нужно создать пользовательскую базу данных.

учетные записи

Exim и Courier проверяют несколько мест, чтобы увидеть, действительны ли логин или входящее письмо. Exim проверяет, указан ли домен в качестве локального имени хоста, или находится ли он в домене /var/mail/virtualили находится в нем /etc/valiases.

Создание учетных записей электронной почты

В конце концов я создал несколько инструментов, чтобы упростить этот процесс, но добавление нового пользователя приводит к следующему:

mkdir -p /var/mail/virtual/example.com/email
chown -R mail.mail /var/mail/virtual/example.com/
maildirmake /var/mail/virtual/example.com/email/mail
chown -R mail.mail /var/mail/virtual/example.com/

Затем добавьте адрес курьера userdb - чтобы они могли войти

userdb email@example.com set uid=8 gid=8 home=/var/mail/virtual/example.com/email mail=/var/mail/virtual/example.com/email/mail

Обязательно замените значения там, где это необходимо. Также - uidи gid должны быть числовые идентификаторы пользователя / группы для пользователя почты.

userdbpw -md5 | userdb email@example.com set systempw

Вам будет предложено ввести пароль, введите пароль, который вы хотите использовать для учетной записи.

makeuserdb

Наконец, сгенерируйте файлы userdb hash / shadow. Перезапустите Courier и проверьте, работают ли ваши изменения:

authtest email@example.com

Должен производить что-то похожее на

Authentication succeeded.

     Authenticated: email@example.com  (uid 8, gid 8)
    Home Directory: /var/mail/virtual/example.com/email
           Maildir: /var/mail/virtual/example.com/email/mail
             Quota: (none)
Encrypted Password: $1$LOLCATS$THISWILLBEAHASH.
Cleartext Password: (none)
           Options: (none)

Если вы видите «Сбой аутентификации: операция не разрешена», вместо этого отредактируйте файл / etc / courier / authdaemonrc и добавьте authuserdb в строку authmodulelist.

После подтверждения всех тестов перезапустите различные задействованные сервисы ( courier-authdaemon, exim4), откройте порты 143, 25, 586, 495, 110 и настройте учетные записи в своем любимом почтовом клиенте.

Создание псевдонимов электронной почты

Для каждого домена вы должны создать файл /etc/valiases(создать, если он не существует), по крайней мере, со следующей строкой:

*: :fail: No user at this address.

Что это говорит: если входящая почта не совпадает ни с одной учетной записью электронной почты, которая у меня есть в файле - тогда письмо должно быть отказано и получено сообщение «Нет пользователя по этому адресу» Таким образом, вся почта, отправленная, чтобы сказать: foo@example.comбудет отклонена как отказ.

Тем не менее, у нас есть несколько адресов электронной почты, которые мы хотим сохранить в другом месте - например, example@gmail.com - для этого нам нужно создать, /etc/valiases/example.comи содержимое файла должно быть следующим:

fwd: example@gmail.com
*: :fail: No user at this address.

Таким образом, даже если fwd@example.com не совпадает ни с одной учетной записью электронной почты на сервере, он совпадает в /etc/valiasesфайле, и почта будет переадресована на example@gmail.com - однако foo@example.com все равно не будет работать с сообщение «Нет пользователя по этому адресу».

Марко Чеппи
источник
11
Это идет с номером ISBN?
Уэсли
1
@WesleyDavid Я не думаю, что моя история bash будет отображаться как ISBN :)
Марко Чеппи
Просто следуя этим - очень ценным - я отредактировал выше, чтобы покрыть ошибку, которую я получил в строке authtest.
Даррен Гривз,
@DarrenGreaves Спасибо! Я рад, что это помогло и спасибо за обновление!
Марко Чеппи
Я изо всех сил пытаюсь заставить все это работать - я только заставил работать маршрутизацию valiases, когда я добавил (отредактированный для путей) 350 файл маршрутизации от debian-administration.org/articles/140 - виртуальные домены не работают вообще - Вам вообще нужно было добавлять какие-либо файлы маршрутизации? Ta.
Даррен Гривз
14

Самый простой способ - бежать sudo tasksel install mail-server. Это даст вам почтовый сервер с нормальными настройками. Все, что вам нужно сделать, это ответить на несколько вопросов. Очевидно, что вы все еще можете выполнять ручную настройку, если это необходимо, но в большинстве случаев этого не произойдет. Просто следуйте инструкциям на экране, и все будет хорошо.

Чтение по администрированию почтовых сервисов абсолютно рекомендуется.

Официальные ссылки:

Джо-Эрленд Шинстад
источник
Есть ли ленивый способ увидеть, что это будет делать (пакеты, которые он установит, настройки по умолчанию)? Под ленивым я подразумеваю, не устанавливая это непосредственно.
Хавьер Ривера
@Javier вы можете посмотреть, какое содержимое установлено, запустивsudo tasksel --task-packages mail-server
Marco Ceppi
Конфигурация хранится в MySQL, нет антиспама, нет антивируса ... это не очень полезно для нас :(.
Хавьер Ривера
4

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

постфикс

Голубятня (imap и pop3)

Это на самом деле довольно просто, я запустил его и запустил через несколько минут, и я получаю электронные письма. Это также полезно , чтобы проверить , что все установлено ки pingability .

О, и вам, конечно, придется правильно настроить записи DNS, как показано ниже (в зависимости от настроек, которые у меня работали):

name   type   content
  @      A     ???.???.??.??    
mail     A     ???.???.??.??

а также

         MX Records
Name                 Priority
mail.mydomain.com.      1
mail2.mydomain.com.     2

Обратите внимание на полную остановку в конце почтовых серверов и введите свой IP-адрес и имя домена, где это необходимо.

ним чимпский
источник