Вступление
Как мне удалось выяснить ранее, одной из особенностей почты на Google или Yandex-e является то, что при отсылке письма, каким бы то ни было способом, будь то sendmail, PHPMailer и др., поле From должно совпадать с именем ящика, через который отправляется письмо. Если поле From отличается от имени ящика, то Google это поле, просто напросто, проигнорирует, а Yandex вообще откажется отправлять такое письмо.
Таким образом, я пришел к выводу, что реализовать на сайте форму такого вида:
через Google или Yandex не получится, так как адрес отправителя письма (поле From) в этой форме для каждого письма задаётся индивидуально. Более того, если у меня есть несколько сайтов, с которых могут приходить письма, то у каждого сайта должен быть свой From Address (поле From в письме). Остается другой вариант — посылать письма через smtp сервер интернет провайдера, и как выяснилось у моего провайдера, Avangard-DSL он имеется, но с ним тоже не всё просто.
Задача
Если я задаю smtp сервер Авангарда в настройках Joomla:
, то у меня вся почта на сайте нормально работает, и проблема с полем From решается, и это уже определенный успех. Чтобы успех был полным, надо настроить почту через sendmail или ssmtp, причем второй вариант предпочтительнее, потому что ssmtp проще конфигурируется.
Инсталлирую ssmtp и смотрю, что он подменил sendmail:
# ls -l /usr/sbin/sendmail lrwxrwxrwx 1 root root 5 2010-12-03 10:54 /usr/sbin/sendmail -> ssmtp
для проверки прописываю конфигурацию в файле /etc/ssmtp/ssmtp.conf через GMail:
mailhub=smtp.gmail.com:587 AuthUser=unixappdev AuthPass=****** UseSTARTTLS=yes UseTLS=yes FromLineOverride=yes
создаю файл body.txt:
To: Test Guy <sometextguy1@yandex.ru> From: Me <unixappdev@gmail.com> Subject: Hello World Hello world!
тестирую:
sendmail sometextguy1@yandex.ru < body.txt
Ура! Письмо пришло, значит всё работает. Теперь то же самое через smtp.spbtlg.ru. Прописываю конфигурацию:
mailhub=smtp.spbtlg.ru AuthUser=soap AuthPass=****** UseSTARTTLS=no UseTLS=no FromLineOverride=yes
тестирую:
$ sendmail cvx@yandex.ru < body.txt
sendmail письмо не посылает и выдаёт вот такую штуку:
sendmail: Server didn’t like our AUTH LOGIN (530 5.7.0 Must issue a STARTTLS command first. x54sm3988511eeh.11)
если прописать в конфигурации следующее:
mailhub=smtp.spbtlg.ru AuthUser=soap AuthPass=****** UseSTARTTLS=yes UseTLS=yes FromLineOverride=yes
то сообщение будет таким:
sendmail: Cannot open smtp.spbtlg.ru:25
, причем если посмотреть через telnet smtp.spbtlg.ru 25, то всё ок.
надо разобраться в чем тут дело, и выяснить можно ли настроить ssmtp для работы с smtp.spbtlg.ru, если через ssmtp не получится то можно сделать через sendmail.
Примечания
Как это ни странно, у Авангарда есть ещё и другой сервер mail.spbnit.ru, при использовании которого происходит то же самое. Вот что по его поводу говорит служба поддержки:
Сервер входящей почты (POP3-сервер): pop.mail.spbnit.ru порт 110.
Сервер исходящей почты (SMTP-сервер): smtp.mail.spbnit.ru порт 25.
Имя пользователя на POP-сервере: имя почтового ящика вместе со значком «@» и названием домена (для почтового ящика user@mail.spbnit.ru — user@mail.spbnit.ru).
Пароль: Ваш пароль к почтовому ящику.
При отправке писем через наш SMTP-сервер содержимое поля From: должно совпадать с именем почтового ящика, в котором была осуществлена SMTP-авторизация: если в настройках почтовой программы указан почтовый ящик mailname@mail.spbnit.ru , то именно это имя почтового ящика должно указываться в поле From:.
Странности
один раз при отправке письма через «Напишите Нам» с установленной галочкой «Отправить копию этого сообщения на ваш адрес» была вот такая штука:
См. Продолжение.