Статьи,обзоры,справочники по PHP


-- I -- Почтовый робот за минут ("COMMAND") - часть 3


поместить строку


testmail: |/home/dima/mail.php


Допустим, ваш основной домен - php.spb.ru. Тогда адрес почтового робота будет testmail@php.spb.ru. Если домен не совпадает с основным, то можно воспользоваться виртульными доменами sendmail'а, обычно это файл с названием virtual (если админ не умеет - на мыло).

6) Не забудем пересоздать базу из файла aliases.

На некоторых линухах установлен не sendmail, а что-то другое. Там не нужно пересоздавать базу. Но если в каталоге /etc вы найдете файл aliases.db, то вам это надо (запускать с правами рута):


makemap hash /etc/aliases.db < /etc/aliases ; newaliases


Возможно, досточно выполнить только одну из этих команд... Но так будет работь.

7) Альтернатива 5+6 пунктам (выполнить либо пункты 5+6, либо 7).

Пункт 5 работает надежно - рекомендуется. А этот - может и не работать. Зато, если вы имете телнет-доступ на сервер, можно попробовать обойтись и без админа. Проверим, будет ли работать. Создайте файл /home/dima/.forward (не потеряйте точку). В файле строку:


|/home/dima/mail.php


Данный файл (.forward) дает возможноть любому пользователю, у когорого есть домашний каталог и шелл (только FTP - недостаточно), перенаправлять свою почту на нужные адреса (их может быть много) или запускать команды по приходу письма. E-mail пишут как есть, а команды начинают с вертикальной черты. Много записей разделяют либо запятой, либо переводом строки. Сделайте так и пошлите письмо работу. Обратите внимание, теперь у робота будет адрес пользователя данного каталога /home/dima. Т.е. никаких "testmail" в таком случае сделать нельзя. Для этого существуют алиасы, что и было описано в пунктах 5+6. Адрес будет совпадать с ваши логином на сервере, домен будет основной, т.е. e-mail получиться таким: dima@php.spb.ru. Если после письма файл логов не измениться - значит этот способ на данном сервере не работет (в принципе он должен работать).

8) Готово! Теперь шлем письмо на адрес робота и смотрим что получилось.

  • файл логов создан и содержит письмо - все работает.
  • файл логов есть, но без письма ... сомнительная и маловероятная ситуация. Наверно запускали mail.php из консоли, а потом отправи письмо и оно не дошло, логи не изменились. Сотрите логи, повторно посшлите письмо.
  • файла логов нет, письмо назад не вернулось
    • проверьте, пришло ли оно как обычно письмо на сервер. Каталог с письмами обычно /var/spool/mail. Открыть файл testmail у вас прав не будет, но посмотреть на его размер и дату изменения - есть. Если файла вообще нет - смотрите в логи и т.п... (маловероятно)
    • письмо пришло как письмо, т.е. лежит в /var/spool/mail - забыли перегрузить алиасы
    • файла логов нет, письмо пришло назад - исправьте глюк с переводом каретки

      9) О правах и пользователях.

      Вниманию админу. Файл mail.php в описанной выше конфигурации (5 пункт) будет запущен от пользователя/группы daemon:daemon (это не рут). Если это опасно, то с помощью команды "su" измените пользователя на нужного. Пример: su юзер -c команда. Либо воспользуйтесь sudo или спец битом у файла mail.php.






    • - Начало -  - Назад -  - Вперед -