Atmospherika
  • Slide1
  • Slide2
  • Slide3

Настройка smtp-сервера

В данной статье хотела бы рассказать о настройке smtp-сервера.
В университете нам недавно задали в качестве лабораторной сверстать электронное письмо и сделать массовую рассылку на e-mail адреса. При этом предлагалось использовать готовые сервисы или же самому написать скрипт для рассылки писем.
На тот момент у меня не было своего сайта, поэтому рассылать письма могла лишь с локального сервера. На стационарном компьютере у меня установлен denwer, ибо его установка менее муторна, чем самостоятельная настройка apache+php+mysql на windows (а на linux установка этой связки занимает пару минут : P ). Последующий алгоритм действий в точности подходит тем, у кого также стоит denwer.
Проблема была в том, что функция mail() в php по умолчанию отправляет письма в папку C:\WebServers\tmp\!sendmail, а не на электронные адреса. Для отправки по email адресу нужно у себя на локалке настроить smtp сервер и скачать программу sendmail.exe. О том, как настраивать smtp сервер писали уже не раз, но лично у меня все равно возникали ошибки и недопонимания, поэтому напишу еще раз, всё на ту же тему, но постараюсь сделать это более подробно и ясно.
Настройка smtp сервера.
1) Скачиваем sendmail.zip

2) Распаковываем и берем из папки sendmail.ini и sendmail.exe, копируем его в C:\WebServers\usr\bin, заменяем уже существующий sendmail.exe.

3) Открываем файд php.ini, который находится по адресу C:\WebServers\usr\local\php5

4) Находим и заменяем в нём строчку sendmail_path = “C:\WebServers\usr\bin\sendmail.exe –t -i”  К слову, в пункте [mail_function] у меня раскомментированы только две строчки: sendmail_path и mail.add_x_header = On.

5)Открываем sendmail.ini из папки C:\WebServers\usr\bin и редактируем его, вводим необходимые данные.

Данные запишем для ящика mail.ru, ибо с ним обычно ошибок возникает меньше всего..

smtp_server=smtp.mail.ru — адрес SMTP сервера для mail.ru
smtp_port=2525 — порт SMTP сервера для mail.ru
smtp_ssl=none – ssl использовать не будем
default_domain=mail.ru — доменное имя
error_logfile=error.log — файл , куда будут записываться ошибки
debug_logfile=debug.log — в файле записываются этапы отправки письма, можно узнать, на каком шаге ваше письмо застряло и не дошло до получателя
auth_username=account_name@mail.ru — имя вашего аккаунта
auth_password=account_password — ваш пароль
pop3_server=pop.mail.ru – для авторизации по протоколу pop3
pop3_username=account_name@mail.ru
pop3_password=account_password
force_sender=account_name@mail.ru
hostname=mail.ru

Сохраняем файл

6)Перезапускаем denwer

7)Пробуем послать письмо с помощью функции mail()

Должно работать.

Теперь об ошибках. Чаще всего возникала “Connect timed out.” При этом ошибки, которые к ней приводили, были разные. Для настройки sendmail.ini на стационарном компьютере нужно было указать порт 2525 вместо 25, а smtp_ssl было равно auto, этого было достаточно для того, чтобы скрипт заработал. При настройке на ноутбуке нужно было обязательно поставить smtp_ssl=none.  Если вдруг с портом 2525 работать не будет, то можно попробовать поставить порт 465 и smtp_ssl=auto, но сомневаюсь, что для mail.ru это понадобится..

Пробовала настроить sendmail.ini для яндекса. На скрине приведу рабочие настройки.
настройки smtp для яндекса
настройки smtp для яндекса2

Снова возникнет ошибка, почта отправляться не будет, если не разрешить доступ к почтовому ящику по протоколу pop3.
Открываем почту и ставим галочку «С сервера pop.yandex по протоколу POP3″.
протокол pop3 яндекса

Теперь все работает.

Опубликовано: calendar2013-12-13  clock20:29

Метки: , , , , ,

Добавить комментарий

Ваш e-mail не будет опубликован.
Поля, отмеченные * обязательны для заполнения.

*


7 × = двадцать восемь