Если в конфигурации Joomla (в файле configuration.php) прописать следующее:
var $mailfrom = 'me@somewhere.ru'; var $mailer = 'smtp'; var $smtpauth = '1'; var $smtpsecure = 'ssl'; var $smtpport = '465'; var $smtpuser = 'somename@gmail.com'; var $smtppass = 'XXXXX'; var $smtphost = 'smtp.gmail.com';
, то почта будет отсылаться через класс PHPMailer. Одним из недостатков такого варианта является то, что $mailfrom, при использовании smtp.gmail.com не учитывается, и все письма будут приходить от somename@gmail.com. Если зайти в настройки GMail «Аккаунты и импорт», то там можно поменять адрес от которого будут приходить письма нажав кнопку «Отправлять письма с другого адреса». В отличии от Gmail, Яндекс — smtp.yandex.ru вообще не будет принимать письма, если $mailfrom отличный от имени ящика ($smtpuser). Вот настройки для Яндекса:
var $mailer = 'smtp'; var $mailfrom = 'somename@yandex.ru'; var $fromname = 'Вася; var $sendmail = '/usr/sbin/sendmail'; var $smtpauth = '1'; var $smtpsecure = 'none'; var $smtpport = '25'; var $smtpuser = 'somename'; var $smtppass = 'XXXXXX'; var $smtphost = 'smtp.yandex.ru';
Другой вариант отправлять почту через sendmail или PHP Mail Function, что по сути одно и тоже, так как PHP Mail Function mail() работает через sendmail.
В качестве sendmail можно использовать ssmtp, который лекго инсталлируется и настраивается, при установке он создаёт символическую ссылку:
$ ls -l /usr/sbin/sendmail lrwxrwxrwx 1 root root 5 2010-12-03 09:44 /usr/sbin/sendmail -> ssmtp
интересно, что сам sendmail, тоже является ссылкой:
$ ls -l /usr/sbin/sendmail lrwxrwxrwx 1 root root 26 2010-07-23 00:46 /usr/sbin/sendmail -> /etc/alternatives/sendmail
но он обладает тем же недостатком, что и PHPMailer, по крайней мере я сходу не понял, как добиться того, чтобы писма приходили от $mailfrom, а не от $smtpuser, поэтому наверное самым простым вариантом будет установить и настроить sendmail, у котрого, по крайней мере, при работе напрямую (не через smtp) c $mailfrom всё нормально.
Третий вариант — настроить sendmail через SMTP, в этом случае, опять же, From Address будет зависеть от SMTP сервера, а не от настроек Joomla. Вот инструкция по настройке sendmail через smtp.gmail.com:
cd /etc/mail sudo -s nano sendmail.mc
добавляем следующие строки:
define(`SMART_HOST',`smtp.gmail.com')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl define(`CERT_DIR', `MAIL_SETTINGS_DIR`'certs') define(`confCACERT_PATH', `CERT_DIR') define(`confCACERT', `CERT_DIR/CAcert.pem') define(`confSERVER_CERT', `CERT_DIR/mycert.pem') define(`confSERVER_KEY', `CERT_DIR/mykey.pem') define(`confCLIENT_CERT', `CERT_DIR/mycert.pem') define(`confCLIENT_KEY', `CERT_DIR/mykey.pem')
создаем /etc/mail/auth/client-info следующего содержания
AuthInfo:smtp.gmail.com "U:root" "I:XXXXXX@gmail.com" "P:YYYYYY"
,где XXXXXX имя пользователя, а YYYYYY — пароль.
cd /etc/mail/auth/ makemap hash client-info < client-info chmod 700 /etc/mail/auth chmod 600 /etc/mail/auth/* mkdir /etc/mail/certs cd /etc/mail/certs openssl dsaparam 1024 -out dsa1024 -out dsa1024.pem openssl req -x509 -nodes -days 3650 -newkey dsa:dsa1024.pem -out /etc/mail/certs/mycert.pem -keyout /etc/mail/certs/mykey.pem ln -s /etc/mail/certs/mycert.pem /etc/mail/certs/CAcert.pem openssl req -x509 -new -days 3650 -key /etc/mail/certs/mykey.pem -out /etc/mail/certs/mycert.pem chmod 700 /etc/mail/certs chmod 600 /etc/mail/certs/*
запускаем make и перезагружаем конфигурацию sendmail:
cd /etc/mail make /etc/init.d/sendmail reload
тестируем:
cat /var/log/mail.log
Спасибо! Очень помогло
Комментарий by on62 — 8 сентября 2011 @ 18:06