Всем привет, мне нужно реализовать сервис, который отправляет пользователям напоминания по электронной почте. Это должна быть многопоточная система с расписанием. Эта часть хороша, но мне нужно установить и настроить SMTP-сервер для исходящих писем на сервере. Я понятия не имею, как это сделать и чего ожидать. Моими инструментами будут Lamp Combo на каком-то фрагменте Linux (я полагаю, Ubuntu).
решение1
Установка очень специфична для дистрибутивов, поскольку существуют рекомендуемые дистрибутивами способы установки программного обеспечения. В наши дни я очень редко рекомендую кому-либо устанавливать Postfix из исходников на любом дистрибутиве Linux.
В Ubuntu используйте apt-get.
$ sudo apt-get install postfix
Это установит postfix на ваш сервер Ubuntu, а последующая настройка остается за вами. Я советую направлять почту в исполняемый файл sendmail (обычно в /usr/sbin/sendmail), который будет хранить почту в очереди, если система Postfix выйдет из строя. Если вы используете SMTP и подключаетесь к порту 25, и ваш почтовый сервер когда-либо должен будет отключиться для обслуживания, вашему приложению придется хранить собственную очередь почты, иначе возникнет риск, что почта не будет доставлена.
решение2
Установите Postfix, следуя инструкциям наPostfix.org
решение3
Вы также можете установить exim4, который, хотя и более сложен для сложных настроек (из-за хакерских особенностей Debian), гораздо проще настроить для пересылки почты. Просто выполните apt-get install exim4, а затем, при необходимости, dpkg-reconfigure exim4-config.
решение4
Postfix не так уж и сложно поднять из исходного кода, если вы когда-либо собирали/компилировали код из исходного кода.
Мы используем mailx для отправки исходящих писем, а mailx взаимодействует с SMTP-сервером Postfix для фактической точки ретрансляции.
Кроме того, как только сервер Postfix будет запущен и запущен, другие внешние серверы смогут ссылаться на него для ретрансляции электронной почты.
Для сборки Postfix на нашем дистрибутиве Linux (Pozix Linux) мы используем скриптовый процесс сборки.
Вот команда, которую мы используем для создания make-файлов Postfix:
сделать make-файлы 'CCARGS=-DHAS_PGSQL -DUSE_TLS -I/usr/local/pgsql-8.2.13/include -DUSE_CYRUS_SASL -DUSE_SASL_AUTH -I/usr/include/sasl -I/usr/local/BerkeleyDB/include' 'AUXLIBS=-L/usr/local/lib -L/usr/local/pgsql-8.2.13/lib -L/usr/local/BerkeleyDB/lib -lpq -lsasl2 -lz -lm -lssl -lcrypto -lpthread'
Вы можете настроить это под свои нужды. Поскольку мы используем PostgreSQL, у нас есть: -L/usr/local/pgsql-8.2.13/lib -lpq
Вы можете исключить их, если вам не нужна поддержка PostgreSQL; то же самое касается SASL и TLS.
После выполнения этой команды
make install (для новой установки) make upgrade (для обновления предыдущей версии)
Для работы mailx обычно используется задание CRON, которое вызывает скрипт от имени пользователя root.
Скрипт, в свою очередь, вызывает mailx.
MAILX использует файл .rc для чтения переменных среды, и поскольку мы вызываем mailx как пользователь root, нам необходимо поместить файл с именем «.mailrc» в домашний каталог пользователя root.
Содержимое .mailrc выглядит следующим образом:
набор[email protected] установить smtp=mail.mydomain.com установить[email protected] установить smtp-auth-password=парольоповещений установить smtp-auth=логин
Затем в наших скриптах мы вызываем mailx следующим образом:
echo "Тестовое сообщение" | mailx "[email protected] [email protected]" -s "Тема письма" "Текст письма"
или вы можете сделать это:
mailx -s "тема" -a /путь/к/какому-то/файлу[email protected]
где -a позволяет прикрепить файл, а test.msg — внешний файл для чтения в теле письма.
или другой способ, аналогичный первому с прикреплением файла, это:
echo "Тело сообщения" | mailx -s "тема" -a /путь/к/какому-то/файлу[email protected]