Комментарии 23
Спасибо! + вам
Все отлично заработало!!!
Все отлично заработало!!!
Я поступил проще. Написал маленький скрипт на perl, который принимает всё, что передаётся на стандартный вход и сохраняет в файл в определенной папке на диске, а в качеств названия выбирает текущую дату и время. вызов этого скрипта вписал в php.ini. Это дало возможность гибко настраивать механизм отладки почты и без необходимости даже не запускать MTA
PS. Позже выяснилось, что я не изобретал велосипеда. Такой скрипт входит в стандартную поставку denwer Дмитрия Котерова
PS. Позже выяснилось, что я не изобретал велосипеда. Такой скрипт входит в стандартную поставку denwer Дмитрия Котерова
это еще раз подтверждает выгоду, которую человек получает зная множество разных языков программирования... (вот я не знаю еще perl, чтоб написать такую простенькую программку....)
а вы молодец ;)
а вы молодец ;)
Такой скрипт придётся прописывать везде, где уходит почта. Например, я пишу не только на PHP, поэтому требовалось получить решение, работающее для всей системы.
В этом хорошо помогает архитектура Linux. В вашем случае тот же самый скрипт нужно просто переименовать в /usr/bin/sendmail и все программы в системе будут направлять почту через него. И уж есовсем простым движением вы можете внутри этого скрипта определить условия при которых данные будут направляться настоящему MTA (если он нужен).
Про архитектуру согласен. Именно поэтому и используется стандартный MTA. А через /usr/bin/sendmail не все программы посылают почту, некоторые через сокет. Поэтому, чтобы не было никаких вопросов в дальнейшем, не стал использовать замену sendmail в виде скрипта.
может я вас удивлю, однако для того, чтобы такие скрипты могли без изменений работать с сокетами существуют специальные демоны типа inetd (xinetd). Это легко избавляет от необходимости держать в памяти немалого размера MTA.
Я отлично понимаю что и как вы делали, но в случае если вам не требуется настоящий MTA для нормальной отправки почты, и вся почта должна быть отладочной, то можно обойтись указанным скриптом и не занимать сервер лишними службами.
Я отлично понимаю что и как вы делали, но в случае если вам не требуется настоящий MTA для нормальной отправки почты, и вся почта должна быть отладочной, то можно обойтись указанным скриптом и не занимать сервер лишними службами.
Тут дело не в том, какой скрипт прикрутить к inetd, а в том, что проще. При переносе на другую систему всё, что мне нужно сделать - отфорвардить всю почту на локальный ящик. Со скриптом - больше телодвижений. Я бы даже сказал, гораздо больше. Мне кажется, это не стоит 10 Мб памяти, которые отъедает Postfix.
Может быть, есть какие-то преимущества ? Я не понял, объясните, пожалуйста.
Может быть, есть какие-то преимущества ? Я не понял, объясните, пожалуйста.
если ваша задача "_не_ отправлять почту вовне", то способ с полным отсутствием MTA и скриптом, который пишется за 20 минут совершенно ничем не проигрывает вашему способу. И даже не надо плевать на 10 мегабайт памяти.
В остальном не вижу чем ваши телодвижения проще и "стандартнее" моих =)
Это такие мелочи, право слово, что единственное, что я хочу сказать - есть ещё один простой способ это сделать. Больше я ни на что не претендую.
В остальном не вижу чем ваши телодвижения проще и "стандартнее" моих =)
Это такие мелочи, право слово, что единственное, что я хочу сказать - есть ещё один простой способ это сделать. Больше я ни на что не претендую.
:-)
Не хотел Вам обидеть ! Не принимайте близко к сердцу.
Просто мне не хочется изобретать велосипеды, в виде скрипта для решения каждой задачи своим путём, если есть уже проверенное рабочее решение. Тем более, Вы прекрасно понимаете, что это совсем не 20 минут.
Если Вы напишете статью, где будет этот скрипт, и описано, как его настроить, и это будет так же просто для любого не-админа, я в начале этой статьи напишу: "UPD: есть лучший способ, пользуйтесь им", с линком конечно, на Вашу статью. И это будет правильно.
Не хотел Вам обидеть ! Не принимайте близко к сердцу.
Просто мне не хочется изобретать велосипеды, в виде скрипта для решения каждой задачи своим путём, если есть уже проверенное рабочее решение. Тем более, Вы прекрасно понимаете, что это совсем не 20 минут.
Если Вы напишете статью, где будет этот скрипт, и описано, как его настроить, и это будет так же просто для любого не-админа, я в начале этой статьи напишу: "UPD: есть лучший способ, пользуйтесь им", с линком конечно, на Вашу статью. И это будет правильно.
в своё время убил много времени на проблему.
есть проще решение:
always_bcc = root@localhost
есть проще решение:
always_bcc = root@localhost
А зачем ставить dovecot? Раз почта перенаправляется локальному пользователю, то можно было б обойтись командой mail в консольке. Или mutt (на любителя:-).
Тоже решал эту проблему. Решил чуть проще, но и возможностей меньше. Просто настроил локальный почтовый ящик (mailbox). Для этого устанавливается sendmail из коробки и настраивается любимый почтовик на mailbox /var/mail/[username]. Туда будут сваливаться все письма, направленные локально на пользователя [username], например username@server.loc
Недостаток - домен должен резолвится локально и имя пользователя совпадать с вашим. В настройках не ковырялся, но можно и это поправить.
Недостаток - домен должен резолвится локально и имя пользователя совпадать с вашим. В настройках не ковырялся, но можно и это поправить.
Тоже пробовал с sendmail, но у неё именно описанный недостаток - самый большой. Т.е. дополнительно в DNS ковыряться. Postfix без этого работает ОК. Кстати, как в sendmail сделать глобальный форвардинг - не знаю, не дошёл до этого момента. Удалил после того, как выявилась проблема с DNS.
Имя пользователя, кстати, может быть любым из имеющихся в системе - главное забить его в настройки учётной записи почтового клиента.
Имя пользователя, кстати, может быть любым из имеющихся в системе - главное забить его в настройки учётной записи почтового клиента.
Сделал по второму методу, только вот с одним отличием:
Добавил пакет PCRE map support for Postfix (postfix-pcre)
В /etc/postfix/main.cf написал
virtual_alias_maps = pcre:/etc/postfix/virtual.pcre
А в самом файле /etc/postfix/virtual.pcre -
/(.+)@(.+)/ мой_логин@localhost
Теперь вся почта сыпется в мой локальный ящик, но заголовки не затираются. Спасибище за статью :)
Добавил пакет PCRE map support for Postfix (postfix-pcre)
В /etc/postfix/main.cf написал
virtual_alias_maps = pcre:/etc/postfix/virtual.pcre
А в самом файле /etc/postfix/virtual.pcre -
/(.+)@(.+)/ мой_логин@localhost
Теперь вся почта сыпется в мой локальный ящик, но заголовки не затираются. Спасибище за статью :)
Ээээм. А я (в Python) тупо использую mock-библиотеку. Наверное, и в PHP что-то подобное есть.
Чёрт возьми, вовремя! Спасибо за статью!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Настройка почты для отладки mail-функций разрабатываемых приложений на Ubuntu