📧 Настраиваем почтовый сервер для нескольких доменов (postfix multiple domains)

| Автор: / School-PHPSchool-PHP.com | Количество просмотров: 31289
Р - романтика скажете Вы. Но нет! Р - рабочий почтовый сервер скажу я Вам.

В одном из своих уроков стукнуло меня в голову сообщить ученикам, что можно поднять свой сервер и уже на него вешать сайты заказчиков. А как же настроить каждому свой персональный ящик? Вот тут и главная проблема всплывает, как это настроить. Поэтому в данном блоге мы будем настраивать на примере моих двух доменов: school-php.com и creative-tm.com. Сразу оговорюсь, что мы расширяем знания после урока настройки почтового сервера. Хочу заметить, что урок по настройке почты брал материалы из нескольких источников, один из которых - данная статья. Ссылку на статью даю лишь для редчайших случаев, когда человек пришел на эту страницу из гугла и не понимает о чём речь ниже по тексту, но ещё не готов стать полноценным учеником. В общем с организацией разобрались, а теперь давайте настраивать.

А оказалось всё довольно просто, правда действует главное правило: 1 сайт = 1 ip. Значит покупаем IP у хостера и настраиваем:
В таблицу MySQL `virtual_domains` я добавил 2 записи: creative-tm.com и mail.creative-tm.com
В таблицу MySQL `virtual_users` добавил 1 запись: admin@creative-tm.com и привязал к домену creative-tm.com .
Далее правил /etc/opendkim.conf
#Domain                 school-php.com, creative-tm.com
#KeyFile                        /etc/dkimkeys/dkim.key
#Selector               mail

AutoRestart             yes
Background              yes
Canonicalization        relaxed/simple
DNSTimeout              5
Mode                    sv
SignatureAlgorithm      rsa-sha256
SubDomains              no
X-Header                no

KeyTable                /etc/opendkim/KeyTable
SigningTable            /etc/opendkim/SigningTable
ExternalIgnoreList      /etc/opendkim/TrustedHosts
InternalHosts           /etc/opendkim/TrustedHosts


Обратите внимание, что я закоментировал Domain, KeyFile и Selector , они нам не нужны! Но нам нужна папка opendkim (mkdir команда) и файлы KeyTable, SigningTable, TrustedHosts. Заполняем их:
nano /etc/opendkim/KeyTable

mail._domainkey.school-php.com school-php.com:mail:/etc/dkimkeys/school-php.com/dkim.key
mail._domainkey.creative-tm.com creative-tm.com:mail:/etc/dkimkeys/creative-tm.com/mail.private

nano /etc/opendkim/SigningTable

school-php.com mail._domainkey.school-php.com
creative-tm.com mail._domainkey.creative-tm.com

nano /etc/opendkim/TrustedHosts

127.0.0.1
localhost
178.57.218.127
school-php.com


Не забудьте указать IP Ваших доменов. Теперь вносим правки в postfix:
nano /etc/postfix/main.cf

virtual_alias_domains = school-php.com, creative-tm.com
sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transport

/etc/postfix/sender_transport

# Use source IP - 178.57.218.127
@school-php.com                school-php-out:

# Use source IP - 37.143.8.206
@creative-tm.com                creative-tm-out:


В master.cf убираем smtp стандартный и прописываем новые пути (оба варианта на один домен):
nano /etc/postfix/master.cf

# smtp      inet  n       -       y       -       -       smtpd

127.0.0.1:smtp inet  n     -       n       -       -       smtpd
      -o syslog_name=postfix-localhost
      -o smtp_helo_name=localhost
      -o smtp_bind_address=127.0.0.1
      -o myhostname=localhost

178.57.218.127:smtp inet  n     -       n       -       -       smtpd
      -o syslog_name=postfix-school-php.com
      -o smtp_helo_name=school-php.com
      -o smtp_bind_address=178.57.218.127
      -o myhostname=school-php.com

37.143.8.206:smtp inet  n     -       n       -       -       smtpd
      -o syslog_name=postfix-creative-tm.com
      -o smtp_helo_name=creative-tm.com
      -o smtp_bind_address=37.143.8.206
      -o myhostname=creative-tm.com

school-php-out  unix -       -       n       -       -       smtp
   -o smtp_bind_address=178.57.218.127
   -o smtp_helo_name=school-php.com
   -o syslog_name=postfix-school-php.com

creative-tm-out  unix -       -       n       -       -       smtp
   -o smtp_bind_address=37.143.8.206
   -o smtp_helo_name=creative-tm.com
   -o syslog_name=postfix-creative-tm.com


Теперь создаём в папке /etc/dkimkeys папки наших сайтов. Ранее уже создавали один из ключей, поэтому повторно его генерировать не надо, а вот для новых - надо:
mkdir /etc/dkimkeys/creative-tm.com
cd /etc/dkimkeys/creative-tm.com/
opendkim-genkey -r -s mail -d creative-tm.com
cd ..
chown -R opendkim:opendkim creative-tm.com
chmod -R 700 creative-tm.com

cd /etc/dkimkeys/creative-tm.com/

Теперь блок команд:
postmap hash:/etc/postfix/sender_transport
service opendkim restart
service postfix restart
service dovecot restart


Вот и всё, теперь настраиваем домен и IP:
1) IP должен быть привязан к серверу.
2) Домен должен быть прописан к серверу так же, для этого необходимо указать NS DNS записи в панели управления доменом.
3) Домен необходимо привязать к серверу, в ihc.ru необходимо открыть управление DNS записями и добавить новый домен.
4) Теперь прописываем остальные DNS записи. Напомню, что ключ для DKIM мы берём из файла: /etc/dkimkeys/creative-tm.com/mail.txt .



На этом всё. Не забывайте всё протестировать, воспользуйтесь PHPMailer для отправки писем. Так же стоит заглянуть в заголовки писем. В случаях ошибок читаем внимательно сообщения при рестартах, а так же в логах: /var/log/syslog или /var/log/mail.err


Комментарии о School-PHP (0):


Напишите свой комментарий:
Имя:
E-mail:
на него отправится ответ
Skype Станислава:
напишите мой скайп
(есть внизу страницы)
Введите комментарий:

* Комментарий при отправке отправляется на пре-модерацию. Вынужденная защита от спама, чтобы сайт был чистым.

Персональный блог Ускова Станислава: School-PHP.com

В основном в данном блоке идут посадочные страницы с целью привлечения аудитории из Google и Yandex. Под каждый поисковый запрос создаётся отдельная страница, в итоге мы получаем много статей на разные темы, при этом полезны только для того, кто был заинтересован именно этим запросом. Для остальных же всё же советую сосредоточиться на прохождении общей программы курса!
Главная БАЗОВЫЙ КУРС ПЕРВЫЙ УРОВЕНЬ программирования ВТОРОЙ УРОВЕНЬ верстки ВТОРОЙ УРОВЕНЬ программирования Начать обучение Запуск проекта Мелкие трюки Делимся практикой трудоустройства Проверь свои знания Задачи по PHP MySQL Блог Отзывы