Первое, что вам нужно сделать, это установить какой-нибудь MTA (почтовый транспортный агент), чтобы вы могли получить по электронной почте вывод вашей команды cron. В настоящее время все остается, ключевая диагностическая информация отбрасывается, поэтому вам придется изо всех сил пытаться что-то исправить. Я бы порекомендовал mssmtp в качестве простой отправной точки.
Инструкция по настройке mssmtp скопирована отсюда для предотвращения гниения ссылок:
Для начала нам нужно установить 3 пакета:
sudo apt-get install msmtp msmtp-mta ca-certificates
Как только они установлены, требуется конфигурация по умолчанию. По умолчанию msmtp будет смотреть на /etc /msmtprc, поэтому я создал это с помощью vim, хотя любой текстовый редактор справится с задачей. Этот файл выглядел примерно так:
# Set defaults.
defaults
# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# Setup WP account's settings.
account <MSMTP_ACCOUNT_NAME>
host smtp.gmail.com
port 587
auth login
user <EMAIL_USERNAME>
password <PASSWORD>
from <FROM_ADDRESS>
logfile /var/log/msmtp/msmtp.log
account default : <MSMTP_ACCOUNT_NAME>
Любые элементы в верхнем регистре (т. <PASSWORD>
) - это вещи, которые необходимо заменить в зависимости от вашей конфигурации. Исключением является файл журнала, который, конечно же, может быть помещен туда, куда вы хотите записывать любые действия / предупреждения / ошибки msmtp.
Как только этот файл будет сохранен, мы обновим разрешения для указанного выше файла конфигурации - msmtp не запустится, если разрешения для этого файла слишком открыты, - и создадим каталог для файла журнала.
sudo mkdir /var/log/msmtp
sudo chown -R www-data:adm /var/log/msmtp
sudo chmod 0600 /etc/msmtprc
Затем я решил настроить logrotate для журналов msmtp, чтобы убедиться, что файлы журналов не становятся слишком большими, а также сохранить каталог журналов немного более аккуратным. Для этого мы создаем /etc/logrotate.d/msmtp и настраиваем его следующим файлом. Обратите внимание, что это не является обязательным, вы можете не делать этого, или вы можете настроить журналы по-другому.
/var/log/msmtp/*.log {
rotate 12
monthly
compress
missingok
notifempty
}
Теперь, когда ведение журнала настроено, нам нужно указать PHP использовать msmtp, отредактировав /etc/php/7.0/apache2/php.ini и обновив путь sendmail из
sendmail_path =
в
sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -a <MSMTP_ACCOUNT_NAME> -t"
Здесь я столкнулся с проблемой, когда даже при указании имени учетной записи он неправильно отправлял электронные письма при тестировании. Вот почему строка учетной записи default: была помещена в конец файла конфигурации msmtp. Чтобы проверить конфигурацию, убедитесь, что файл PHP был сохранен, и запустите sudo service apache2 restart, затем запустите php -a и выполните следующее
mail ('personal@email.com', 'Test Subject', 'Test body text');
exit();
Любые ошибки, возникающие в этой точке, будут отображаться в выходных данных, поэтому следует упростить диагностику любых ошибок после теста.