PostgreSQL coub express.js freeware git jquery laravel links linux macos mysql node.js php powershell python ubuntu vim virtualbox анекдот блог игры интересно стихи цитаты

Базовая настройка sendmail, Ubuntu
December 25, 2012
Я не администратор, поэтому относитесь к этой заметке с осторожностью.
Рассматривается такя ситуация: надо заставить sendmail сервера отправлять почту, но ничего в ответ не принимать. Строго для оповещений с сайтов. У меня вдс-ка с предустановленным exim4 на который, насколько я понимаю, "ссылается" sendmail. Т.е. фактически работает exim4.

Сначала настраиваем хост (my-host-name это имя нашего хоста с которого все будет ездить)
sudo mcedit /etc/hosts
В файле должны быть строки вида
127.0.0.1 localhost
111.111.111.111 hostname.my-hoster.net my-host-name
Далее меняем имя хоста в файле
sudo mcedit /etc/hostname
Файл должен выглядеть вот так (полностью, т.е. только имя хоста и все)
my-host-name
Теперь перегружаем службу которая грубо говоря обновляет имя хоста глобально
sudo /etc/init.d/hostname.sh stop
sudo /etc/init.d/hostname.sh start
# если такого скрипта нет, то пробуем иначе:
sudo service hostname restart
REM ещё такой вариант есть, для Debian 9 (stretch)
hostnamectl set-hostname my-host-name
Теперь выполняем команды
hostname
hostname -f
Если все правильно сделано, то они обе должны вернуть значение my-host-name (т.е. имя вашего хоста)

Теперь надо настроить сам sendmail. В моем случае, нужно перенастроеить exim4. Делается это примерно так:
sudo dpkg-reconfigure exim4-config
После этого в мастере просто нужно выбирать значения (именно для exim4)
  • internet site..
  • вводим название вашего хоста (my-host-name)
  • ip для smtp устанавливаем только 127.0.0.1 т.к. нам не нужны внешние подключения по smtp
  • другие допустимые назначения оставляем по умолчанию
  • домены для разрешенного релея - оставляем пустым
  • машины для релея - оставляем пустым
  • кол-во днс запросов на ваше усмотрение, я не ограничивал
  • метод доставки я оставил тот же который был, т.е. /var/mail
  • разделять не разделять файлы конфигурации - на ваше усмотрение, аргументы там описаны, я разделять не стал
Теперь, чтобы проверить ходит ли почта делаем так
sendmail -i my-email@my-host.com
Далее вводим тект тестового сообщения. И по готовности нажимаем Ctrl+d
Идем проверяем свою почту. Если письмо пришло - все ок и ура. Если нет - идем гуглить дальше :)

Дальше надо убедиться что на нашем сервере недоступен smtp, для этого нам надо сходить с локальной машины постучаться в 25 порт сервера и получить отлуп. Делается это например так:
telnet my-host-name 25
Trying 111.111.111.111...
telnet: Unable to connect to remote host: Connection refused
Если все так, то все тип-топ. Порт закрыт.

Ещё маленькая фишка. Бывает так что по каким-то причинам, сервис рулящий веб-приложением надо перезапускать регулярно. В моем случае это node.js и делаю я это по крону раз в N времени. Так вот если перезапустить процесс кроном, то sendmail перестает работать, потому как приложение не знает где он, в path пути до него просто нет и соот-но он просто не находится. Точно так же можно передавать любые другие настройки переменных окружения. Как это делать смотрим ниже.

Сначала посмотрим где sendmail
which sendmail
/usr/local/bin/sendmail
Ок, видим путь. Если вдруг не видим то идем смотреть тоже самое но под sudo. Теперь идем в кронтаб и добавляем переменные окружения там.
crontab -e
Откроется редактирование заданий для текущего пользователя. То есть все задания будут выполнены с правами текущего пользователя и сервис запустится с правами этого пользователя, если он запускается конечно согласно вашему плану :)

# это переменная которая рассказывает где искать sendmail,
# другие нужные пути можно писать через разделитель - двоеточие
# там будут искаться необходимые нам утилиты
PATH=/usr/local/bin

# это пример переменной окружения которую будет использовать само приложение
NODE_ENV=production

# это собственно само задание, гуглим по формату crontab чтобы понять что к чему
# в данном случае скрипт будет срабатывать в 30 минут каждого четного часа
*/30 */2 * * * /home/user/blog/scripts/restart.sh
Ну вот примерно так. Прошу не воспринимать эту заметку как полное руководство к действию, вполне возможно что для вашего случая все будет значительно отличаться. Но возможно это как-то поможет или хотя бы наведет на мысли в нужном направлении :) Успехов!

Пользовался вот этим источником. Рекомендую на него взглянуть, надеюсь он ещё дышит.

Comments

No comments here yet.
You have to login to post a new comment.
aghr