Назад | Перейти на главную страницу

Sendmail во FreeBSD отправка с внешним SMTP без аутентификации

Прошу прощения, если сначала это может показаться запутанным.

Мой брат попросил меня сделать для него веб-сервер, потому что он хотел самостоятельно разместить свой веб-сайт и больше не пользоваться услугами хостинга. Проблема с этим ISP. Помимо динамической схемы IP, они блокируют исходящие TCP-соединения на порту 25 и вместо этого предлагают свой внешний сервер, который не требует аутентификации.

Для настройки веб-сервера я выбрал FreeBSD, так как предпочитаю тюрьмы виртуальным машинам или запуск служб непосредственно на хост-машине. Это значительно упрощает резервное копирование и управление безопасностью (по крайней мере, для меня).

На данный момент я полностью отключил sendmail, но хочу снова включить его, чтобы пользователи могли использовать функцию восстановления пароля при необходимости. У меня вопрос: как настроить sendmail на использование внешнего SMTP без аутентификации пользователя или пароля?

Заранее спасибо за вашу помощь!

Оба комментария к вашему сообщению находятся в правильном направлении. Вот более полноценный ответ.

(TL; DR внизу)

Как root, начните с создания безопасной копии вашего /etc/mail каталог:

# cd /etc
# cp -Rp mail mail.safety

Для целей этого примера я предполагаю, что у вас нет настроек для вашей конфигурации электронной почты, и фактически мы начнем с «обнуления» ваших существующих файлов sendmail, чтобы гарантировать, что мы начнем с чистого листа. . Если у вас есть настройки, не волнуйтесь, мы начали с резервного копирования этих файлов. Позже вы сможете повторно применить свои настройки.

Сначала перейдите в mail каталог и удалите существующий *.cf файлы:

# cd mail
# rm *.cf

В системах FreeBSD часто бывает $(hostname).mc файл и $(hostname).submit.mc файл, помимо стокового freebsd.mc и freebsd.submit.mc файлы, которые распространяются с ОС. Вот результат ls в системе с простым именем хоста test:

# ls *.mc
freebsd.mc         freebsd.submit.mc     test.mc         test.submit.mc

Вы, вероятно, увидите похожие файлы, но со ссылкой на имя хоста вашего собственного компьютера. Причина в том, что freebsd*.mc Файлы представляют собой базовую отправную точку для настройки sendmail. В $(hostname)*.mc файлы - это (потенциально) настроенные файлы, специфичные для вашей системы. Хотя обновление ОС может перезаписать freebsd*.mc файлы, он не коснется файлов, специфичных для вашего хоста, поэтому ваши тщательно настроенные конфигурации не будут перезаписаны обновлением ОС. Ваша часть этой сделки заключается в том, что вы должны ограничить свои изменения $(hostname)*.mc файлы и оставьте freebsd*.mc справочные файлы нетронутыми.

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

Итак, с учетом этого, давайте продолжим.

Удалите ваш $(hostname)*.mc файлы так, чтобы Makefile клонирует вашу конфигурацию из известного freebsd*.mc файлы.

# rm -v $(hostname)*.mc
test.mc
test.submit.mc

Теперь, когда мы удалили ваши старые файлы конфигурации, давайте запустим make создавать новые на основе freebsd.mc и freebsd.submit.mc файлы, предоставляемые ОС:

# make
cp -f freebsd.mc test.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 test.mc > test.cf
cp -f freebsd.submit.mc test.submit.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 test.submit.mc > test.submit.cf

На самом деле это немного больше, чем нам нужно, но это нормально. Важно то, что Makefile скопировано freebsd.mc к $(hostname).mc и freebsd.submit.mc к $(hostname).submit.mc.

Теперь давайте проверим $(hostname).mc файл. В строке 89 или около нее (файла, который я ищу для FreeBSD 12) находится SMART_HOST директива, упомянутая предыдущими авторами:

# grep SMART_HOST $(hostname).mc
dnl define(`SMART_HOST', `your.isp.mail.server')

'Dnl' в начале строки означает, что строка закомментирована. Можно подумать, что DNL означает «Отменить (или игнорировать) до NewLine».

Отредактируйте свой .mc файл:

# vi $(hostname).mc

и измените эту строку, чтобы читать:

define(`SMART_HOST', `smtp.example.com')

где smtp.example.com это DNS-имя сервера, который ваш провайдер сказал вам использовать. Не забудьте также удалить "dnl". Сохраните файл и выйдите.

Теперь беги make для повторной генерации ваших файлов $ (hostname) *. cf:

# make
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 test.mc > test.cf
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 test.submit.mc > test.submit.cf

Бегать make install скопировать ваш $(hostname)*.cf файлы со стандартными именами, которые ожидает sendmail (sendmail.cf и submit.cf):

# make install
install -m 444 test.cf /etc/mail/sendmail.cf
install -m 444 test.submit.cf /etc/mail/submit.cf

Перезапустите sendmail:

# make restart

Наконец, осмотрите /var/log/maillog чтобы убедиться в отсутствии ошибок.


TL; DR

# cd /etc
# cp -Rp mail mail.safety
# cd mail
# rm *.cf
# rm -v $(hostname)*.mc
# make
# vi $(hostname).mc

Изменить SMART_HOST строка для чтения:

define(`SMART_HOST', `smtp.example.com')

и продолжаем:

# make
# make install
# make restart