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