Инструменты пользователя

Инструменты сайта


doc:os:freebsd:mail:sendmail:set_up_sending_without_set_up_sendmail_server

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
doc:os:freebsd:mail:sendmail:set_up_sending_without_set_up_sendmail_server [d.m.Y H:i] – создано dbehterevdoc:os:freebsd:mail:sendmail:set_up_sending_without_set_up_sendmail_server [d.m.Y H:i] (текущий) dbehterev
Строка 1: Строка 1:
 +====== Настройка отправки Sendmail без настройки самого почтового сервера ======
  
 +Для кого нужно: виртуальный хостинг, когда вам не нужно ставить почтовый сервер для каждой виртуальной машины только ради того, чтобы настроить отправку писем. 
 +
 +===== Порядок действий =====
 +
 +**1.** Нам не нужно запускать почтовый сервер, поэтому в rc.conf: sendmail_enable="NO"
 +
 +**2.** Далее создаем файл `hostname`.mc (здесь `hostname` - результат выполнения команды hostname):
 +  
 +  cd /etc/mail
 +  cp freebsd.mc `hostname`.mc
 +  
 +**3.** Открываем `hostname`.mc, прописываем:
 +  define(`SMART_HOST', `DNS_имя_вашего_почтового_сервера')
 +
 +Обратите внимание, ведущий "dnl" удален (это маркер комментария). Также 'DNS_имя_вашего_почтого_сервера' - укажите имя почтового сервера, который с радостью примет почту от вашего хоста, забыв при этом про авторизацию.
 +
 +Замечание. У меня не всегда получалось методом выше заставить sendmail пользоваться смарт-хостом. Попробуйте поместить смарт-хост в квадратные скобки, вы тем самым скажете Sendmail не пользоваться данными mx-записей и не думая отсылать письмо смартхосту. Пример:
 +define(`SMART_HOST', `[DNS_имя_вашего_почтового_сервера]')
 +
 +**4.** Далее:
 +
 +  make
 +  make install
 +  make restart-mta
 +  
 +**5.** Пропишем псевдонимы в файле /etc/mail/aliases:
 +
 +  #пример:
 +  root:       support@<ваш_домен>
 +  
 +**6.** После сохранения, выполняем команду:
 +
 +  newaliases
 +  
 +**7.** Окончательные штрихи. Если вы хотите, чтобы почта с вашего виртуального сервера приходила в формате <правильное_имя>@<правильный_домен>, то внесите в `hostname`.mc записи:
 +
 +  FEATURE(masquerade_envelope)dnl
 +  FEATURE(`genericstable')
 +  GENERICS_DOMAIN(`<правильный_домен>')
 +  
 +**8.** Создайте файл /etc/mail/genericstable, внесите данные:
 +
 +  # примеры
 +  # root <TAB> <правильное_имя>@<правильный_домен>
 +  # root@host.example <TAB> user@example.net
 +  
 +**9.** Далее выполняем: 
 +  makemap hash /etc/mail/genericstable < /etc/mail/genericstable
 +  
 +**10.** Прописываем в /etc/hosts соответствие IP адреса и доменному имени вашей машины.
 +
 +===== Отладка =====
 +
 +1. В /var/log/messages видим ошибку:
 +<code>
 +SYSERR(root): savemail: cannot save rejected email anywhere
 +Losing ./qfp0Q01Lip094100: savemail panic
 +</code>
 +
 +Такое случается, когда не удается отправить почту postmaster'у. В первую очередь, надо проверить, что в /etc/aliases указано, куда отправлять почту, к примеру:
 +<code>
 +root:   support@itcall.ru
 +MAILER-DAEMON: postmaster
 +postmaster: root
 +</code>
 +
 +Т.е. в нашем случае, при отправке почты на postmaster, почта будет переправлена на root, который в свою очередь перенаправит письмо на support@itcall.ru. Если у вас все в порядке с алиасами, то выполните:
 +<code>
 +sendmail -bv MAILER-DAEMON 
 +sendmail -bv postmaster
 +</code>
 +
 +Попробуйте отправить тестовое письмо так:
 +<code>
 +# sendmail -v postmaster@itcall.ru
 +From: root
 +To: root
 +Subject: Test
 +Test
 +.
 +</code>
 +Посмотрите, какие сообщения присутствуют в логе /var/log/maillog.
 +
 +2. Нисмотря ни на что, sendmail при отправке не хочет отправлять через заданный смартхост
 +
 +Например, у меня была ситуация: хочу отправить почту на user@domain.ru, прописан смартхост, через который выполнять отправку, однако sendmail все равно пытается отправить через локальный смартхост 127.0.0.1. Проблема была в том, что в /etc/hosts у меня был прописан этот самый домен, в который я хотел отправить письмо. Как только я изменил домен (к примеру, у меня была запись 192.168.0.20 для domain.ru, я изменил домен на www.domain.ru) в /etc/hosts, все заработало (есстественно, после всех изменений, нужно перезапустить sendmail.
 +
 +Почтовый сервер sendmail считает почтовый домен локальным (то есть обрабатывает почту для данного домена) в следующих случаях, если на сервер указывают записи:
 +  — Запись A или MX в прямой зоне DNS (проверяется командой host имя.домена)
 +  — Hostname сервера
 +  — Записи в /etc/hosts
 +  — Записи в обратной зоне DNS (проверяется командой host ip-address)
 +  — Записи в /etc/mail/local-hosts-names, /etc/mail/virtusertable и непосредственно имя домена может быть определено в конфигах sendmail (hostname.mc, sendmail.mc и из него который создается sendmail.cf — команда grep -i domain /etc/mail/* найдет эти записи.
 +
 +{{tag>sendmail FreeBSD}}