Если после установки например LAMP сервера у вас не работают скрипты с функцией php mail(), точней письма просто не отправляются, то это значит что вам нужно установить почтовый сервер, например Postfix. Но Postfix — это огромный с кучей возможностей почтовый сервер, и мне он был не к чему. Мне нужно было лишь заставить работать функцию mail(), точней просто отправлять письма с сервера, например при регистрации, или заказе товара в интернет-магазине, и т.д. Поискав информацию, я нашел очень хороший, минимальный MTA, для таких целей. Таким оказался — SSMTP. Нету не чего лишнего, прост в установке, и настройке. Давайте установим и настроем ssmtp для отправки писем, например через gmail.
Для установки SSMTP выполните в терминале:
sudo apt-get install ssmtp
Отредактируем файл-конфигурации:
sudo nano /etc/ssmtp/ssmtp.conf
Добавим туда следующие строчки, заменяя их на свои данные:
root=youremailhere@gmail.com
mailhub=smtp.gmail.com:587
AuthUser=yourgmailusername
AuthPass=yourgmailpassword
UseSTARTTLS=YES
По-сути, по таком же примеру можно настроить почту и под любого другого сервиса почты.
Есть еще и другой способ, ниже я приведу пример настроек для yandex.ru
sudo nano /etc/ssmtp/revaliases
Пишем следующие строчки, и не забываем их изменить под свои данные
root:pupkin@yandex.ru:smtp.yandex.ru:465
UserUbuntu:pupkin@yandex.ru:smtp.yandex.ru:465
www-data:pupkin@yandex.ru:smtp.yandex.ru:465
Сохраняем и закрываем.
Редактируем конфиг:
sudo nano /etc/ssmtp/ssmtp.conf
И все содержимое заменяем следующим:
hostname=localhost
FromLineOverride=NO
AuthUser=pupkin@yandex.ru
AuthPass=12345
mailhub=smtp.yandex.ru:465
UseTLS=YES
Подставляем свои данные, сохраняем, и закрываем.
Далее откроем php.ini и отредактируем его:
sudo nano /etc/php/7.2/apache2/php.ini
находим параметр: sendmail_path, раскоментируем его и добавляем путь к ssmtp:
sendmail_path = /usr/sbin/ssmtp -t
Сохраняем изменения и перезагружаем апач:
sudo service apache2 restart
Sendmail
Но существует и второй способ, и он еще проще. Но вся проблема в том, что он не у всех работает, иногда нужно звонить провайдеру, или теребенить в тех поддержку, чтоб прописали PTR запись
Установим sendmail
sudo apt-get install sendmail
отредактируем php.ini И дадим знать для php, что мы будем отправлять почту, через sendmail
sudo gedit /etc/php5/apache2/php.ini
в параметре sendmail_path пропишем следующее:
sendmail_path = /usr/sbin/sendmail -t
Перезагрузим веб-сервер
sudo /etc/init.d/apache2 restart