School PHP

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

Р - романтика скажете Вы. Но нет! Р - рабочий почтовый сервер скажу я Вам.

В одном из своих уроков стукнуло меня в голову сообщить ученикам, что можно поднять свой сервер и уже на него вешать сайты заказчиков. А как же настроить каждому свой персональный ящик? Вот тут и главная проблема всплывает, как это настроить. Поэтому в данном блоге мы будем настраивать на примере моих двух доменов: 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


Комментарии на странице(0):

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

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

Войти | Регистрация