Задача: отправка почты через внешний smtp шлюз с авторизацией по логину и паролю.
допустим smtp будет smtp.example.com, порт 587
Установка
yum install postfix cyrus-sasl-plain
Настройка конфига
В файл /etc/postfix/main.cf
добавляем
relayhost = [smtp.example.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/private/sasl_passwd smtp_sasl_security_options = noanonymous smtp_use_tls = yes smtp_tls_loglevel = 1 smtp_always_send_ehlo = yes inet_protocols = ipv4 inet_interfaces = localhost
Файл с логином и паролем /etc/postfix/private/sasl_passwd
[smtp.example.com]:587 admin@example.com:password123
Создаем Postfix lookup tables
postmap /etc/postfix/private/sasl_passwd
Перезапускаем сервис postfix
service postfix restart
Проверка почты
Через консоль
Установим программу mutt
yum install mutt
Отправляем письмо
echo "test" | mutt -s "subject" nash@e-mail.ru
Через mail() функцию из php файла
<?php $to = 'nash@e-mail.ru'; $subject = 'the subject'; $message = 'hello'; $headers = 'From: admin@example.com' . "\r\n" . 'Reply-To: admin@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); if( mail($to, $subject, $message, $headers) ) { echo "OK"; } else { echo "FAIL"; }
Лог для centos расположен в /var/log/maillog