Поставил postfix. Наладил отправку. А как мне теперь принять почту? И как вообще проверить, в чем загвоздка. Как итог мне нужно принять почту для всех несуществующих пользователей (*@site.ru) и для начала записать ее в файл.
> Поставил postfix. Наладил отправку. А как мне теперь принять почту? И как
> вообще проверить, в чем загвоздка. Как итог мне нужно принять почту
> для всех несуществующих пользователей (*@site.ru) и для начала записать ее в
> файл.Начать с чтения офф документации
http://www.postfix.org/postconf.5.html#luser_relay
Ну так я не сразу ломанулся вопросы задавать, хотелось бы получить конкретный совет
Посмотрел в логи нашел тамNOQUEUE: reject: RCPT from forward20.mail.yandex.net[95.108.253.145]: 454 4.7.1 ........
disconnect from forward20.mail.yandex.net[95.108.253.145]
connect from forward20.mail.yandex.net[95.108.253.145]
> NOQUEUE: reject: RCPT from forward20.mail.yandex.net[95.108.253.145]: 454 4.7.1 ........Вам надо сделать следующее: ........
Затем перазапустить postfix и всё сразу заработает!
> Ну так я не сразу ломанулся вопросы задаватьСудя по вопросам - сразу.
Подскажите. А postfix c mysql только на вывод работает? На запись не работает?
> Поставил postfix. Наладил отправку.как наладили Отправку, так и Прием наладите. Откуда нам знать какой у вас бекэнд пользователей и доменов, а может быть просто через php mail() наладили отправку и сидите радостный с улыбкой до ушей. Правильно вас в официальные документы послали, чтобы вы сами понимали как все это работает и как нужно делать
Для начала можно ознакомиться с http://sys-adm.org.ua/mail/mail-architech
telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 sd1234-02.keymachine.de ESMTP Postfix (Ubuntu)
421 4.4.2 sd1234-02.keymachine.de Error: timeout exceeded
Connection closed by foreign host.
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailnamesmtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no# appending .domain is the MUA's job.
append_dot_mydomain = no# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4hreadme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = sd1234-02.keymachine.de
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mail.site.ru, sd1234-02.keymachine.de, localhost.keymachine.de, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = allluser_relay = login
local_recipient_maps =
virtual_alias_maps = hash:/etc/postfix/virtual_maps
В файле virtual_maps@site.ru /home/login/mail
> telnet localhost 25
> Trying ::1...
> Connected to localhost.
> Escape character is '^]'.
> 220 sd1234-02.keymachine.de ESMTP Postfix (Ubuntu)
> 421 4.4.2 sd1234-02.keymachine.de Error: timeout exceeded
> Connection closed by foreign host.Ну и тестируем-отправляем (в чем проблемы - то),
приблизительный порядок комманд, без helo/ehlo:rcpt to: <touser@mycool.domain>
<= PRESS ENTER KEY NOT ANY KEY
here are server reply: must 'ok'from: <fromuser@mycool.domain>
<= PRESS ENTER KEY NOT ANY KEY
here are server reply: must 'ok'data
<= PRESS ENTER KEY NOT ANY KEY
here are server reply: must 'ok'
Subject: TTesTT
<= PRESS ENTER KEY NOT ANY KEY
TTesTT
<= PRESS ENTER KEY NOT ANY KEY
.
<= PRESS ENTER KEY NOT ANY KEY
<= PRESS ENTER KEY NOT ANY KEY
here are server reply: must 'ok'P.S.
всего делов-то... и внимательно прочитать базовые мануалы,
поверьте это не с SIP`om возиться - любая ошибка в настройке любого MTA диагностируется по 5 (максимум) строчкам из /var/log/mail* и/или telnet`om на соответствующий порт(ы)
В общем сделал такvirtual_mailbox_domains = /etc/postfix/vhosts
virtual_mailbox_base = /home
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_uid_maps = static:1001, static:1002
virtual_gid_maps = static:1001, static:1002В /etc/postfix/vmailbox
@site.ru login/tmp/mail
Запись в файл идет.
а теперь я хочу попробовать отдать php скрипту и пишу в /etc/postfix/vmailbox
@site.ru "|php5-cgi -c /path/to/php.ini /site.ru/public_html/mail.php"(delivery failed to mailbox /home/| "php5-cgi -c /path/to/php.ini /site.ru/public_html/mail.php": unable to create lock file /home/| "php5-cgi -c /path/to/php.ini /site.ru/public_html/mail.php".lock: No such file or directory)
> unable to create lock file /home/| "php5-cgi -c /path/to/php.ini /site.ru/public_html/mail.php".lock:
> No such file or directory)Вы в каком городе? Я поищу для вас магазин, где можно купить англо-русский словарик.
...
> В /etc/postfix/vmailbox
> @site.ru login/tmp/mail
> Запись в файл идет.
> а теперь я хочу попробовать отдать php скрипту и пишу в /etc/postfix/vmailbox
> @site.ru "|php5-cgi -c /path/to/php.ini /site.ru/public_html/mail.php"первая ссылка с моего гугля - via http://wiki.alpinelinux.org/wiki/Setting_up_postfix_with_vir...
(и еще английский прийдется в любом случае подтянуть - ибо это как латынь в медицине)
комманда:
cat /etc/postfix/vmailbox
user1@mycool.domain mycool.domain/user1/
user2@mycool.domain mycool.domain/user2/
@mycool.domain mycool.domain/catchall #<< в этот ящик будут складироваться вся почта не попавшая для user1 или user2 - например для user3@mycool.domainгрубо говоря в этом файле (просто прописывается карта соответствий почтовый
ящик(user1@mycool.domain) => /home/mycool.domain/user1/ <= в данном конкретном случае )
> (delivery failed to mailbox /home/| "php5-cgi -c /path/to/php.ini /site.ru/public_html/mail.php":
> unable to create lock file /home/| "php5-cgi -c /path/to/php.ini /site.ru/public_html/mail.php".lock:
> No such file or directory)ну а здесь пишут о невозможности создать служебный файл блокировки - из-за не понимания пункта выше.
Скрипт на ПЫХЕ должен вызываться со стороны УЕБ сервера, с необходимыми параметрами заданными через интерфейс коммандной строки или конфигурационных файлов...P.S.:
И переведите почтовик с формата Mailbox на Maildir, что-то вроде:home_mailbox = Maildir/
mail_spool_directory = /var/spool/mail
...
local_transport = virtual
virtual_mailbox_domains = example.net
virtual_mailbox_base = /var/spool/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailboxиз того же рук-ва внимательно смотрим подразделы:
Prepare
Create virtual maildirP.P.S:
Не боимся еще раз внимательно перечитать:
http://sys-adm.org.ua/mail/mail-architech на предмeт Mbox vs Maildir и общей архитектуры
и
тот-же линк http://wiki.alpinelinux.org/wiki/Setting_up_postfix_with_vir... для базовой экcпреcc утсановки почтовика.
Удачи в настройке.
Все это здорово, но во первых чтобы записать в формате maildir достаточно добавить косую черту в конце. Для чего Вы используете home_mailbox и mail_spool_directory, мне честно говоря не понятно. Я пробежался по документации и насколько понял благодаря translate.google.com это вовсе не обязательно. Более того, при использовании mail_spool_directory директории не будут создаваться автоматически, что в какой-то мере не так удобно.И САМОЕ ГЛАВНОЕ. По указанному мною выше примеру у меня в целом все работает, т.е. в файл или папку я записать могу. Теперь я хочу отдать результат не в директорию или файл, а php скрипту. С командной строки этот скрипт php5-cgi -c /path/to/php.ini /site.ru/public_html/mail.php работает, а вот postfix его не запускает. А надо как-то его запустить
> Все это здорово, но во первых чтобы записать в формате maildir достаточно
> добавить косую черту в конце. Для чего Вы используете home_mailbox и
> mail_spool_directory, мне честно говоря не понятно.
> Я пробежался по документации и
> насколько понял благодаря translate.google.com это вовсе не обязательно. Более того, при
> использовании mail_spool_directory директории не будут создаваться автоматически, что
> в какой-то мере не так удобно.Полнейшеe ваше право.
> И САМОЕ ГЛАВНОЕ. По указанному мною выше примеру у меня в целом
> все работает, т.е. в файл или папку я записать могу. Теперь
> я хочу отдать результат не в директорию или файл, а php
> скрипту. С командной строки этот скрипт php5-cgi -c /path/to/php.ini /site.ru/public_html/mail.php
> работает, а вот postfix его не запускает. А надо как-то его
> запуститьТогда углублено изучаем доки к postfix`y (в тех же поиcковиках) на предмет LDA и прочего ... в чем проблемы-то ?
> Тогда углублено изучаем доки к postfix`y (в тех же поиcковиках) на предмет
> LDA и прочего ... в чем проблемы-то ?Я тоже не понимаю, зачем этот форум вообще сделали, когда есть гугл
> Я тоже не понимаю, зачем этот форум вообще сделали, когда есть гуглЕстественно, чтобы задавать элементарные вопросы, тупить и наступать на те грабли, которых бы не возникло, если бы было освоена документация и руководство по Постфиксу.
>> Тогда углублено изучаем доки к postfix`y
> Я тоже не понимаю, зачем этот форум вообще сделали, когда есть гуглО! Могу избавить вас от этой омерзительной необходимости - читать и понимать доки. И даже не очень дорого! :)
PS: А тыт как думал? :)
> @site.ru "|php5-cgi -c /path/to/php.ini /site.ru/public_html/mail.php"
> (delivery failed to mailbox /home/| "php5-cgi -c /path/to/php.ini /site.ru/public_html/mail.php":
> unable to create lock file /home/| "php5-cgi -c /path/to/php.ini /site.ru/public_html/mail.php".lock:
> No such file or directory)не может найти ваш длинный файл, суньте весь ваш код с параметрами в отдельный php и вызывайте его.
вы уже задавали вопрос по этом топике: http://www.opennet.me/openforum/vsluhforumID9/10012.html
Ну так а как вызвать то, как в том топике тут уже не выходит
> Ну так а как вызвать то, как в том топике тут уже
> не выходит3нaния подтягивать !
> Ну так а как вызвать то, как в том топике тут уже
> не выходитДеми Мур ты уже начинаешь мне нравится %)
я даже могу предположить следующую проблему после того как postfix будет вызывать скрипт. Access denied потому что вы не учтете права в Postfix :)
создать файл /tmp/myscript.php:
#!/usr/bin/php
<?php
## не знаю зачем php5-cgi используете, все это на вашей совести
php5-cgi -c /path/to/php.ini /site.ru/public_html/mail.php
?>#chmod +x /tmp/myscript.php
#chown nobody:nogroup /tmp/myscript.php (потому что Postfix работает от имени nobody и группы nogroup)редактируете /etc/postfix/vmailbox:
@site.ru "| /tmp/myscript.php"или (тут уже похимичайте, под рукой c php поиграться не могу)
@site.ru "| php -f /tmp/myscript.php"
Но я думаю что таким костылем будет больше проблем чем пользы если окажется что вам нужны будут дополнительные привилегии в цепочке.По идее было бы правильно и кошерно:
1- создать в системе unix пользователя myposter
2- в домашнем каталоге myposter создать .forward файл: | /home/myposter/myscript.php
3- в /etc/aliases: @site.ru myposter или как у вас в файле /etc/postfix/vmailbox: @site.ru myposter
4- newaliases /etc/aliases (если указали в aliases)
5- добавил пользователя myposter в нужную группу
/etc/postfix/vmailbox:
@site.ru "| /tmp/myscript.php"работать не будет. Да и насколько я понимаю virtual_mailbox... исключительно на запись работает.
пользователя для определил в virtual_alias_maps, и уже в /etc/aliases направил на конкретный скрипт. Соответственно и скрипт у меня будет работать с правами нужного мне пользователя
> /etc/postfix/vmailbox:
> @site.ru "| /tmp/myscript.php"
> работать не будет. Да и насколько я понимаю virtual_mailbox... исключительно на запись
> работает.я просто взял ваш кусок кода, который вы пытались выполнить и показал
> пользователя для определил в virtual_alias_maps, и уже в /etc/aliases направил на конкретный
> скрипт. Соответственно и скрипт у меня будет работать с правами нужного
> мне пользователяну флаг вам в зубы и вперед!
> Ну и тестируем-отправляем (в чем проблемы - то),
> приблизительный порядок комманд, без helo/ehlo:для тестирования давно придумали удобную утилиту - swaks (прощай telnet/openssl) ;)
> Соответственно и скрипт у меня будет работать с правами нужного мне пользователяОбожаю глупых блондинок! :)
> Обожаю глупых блондинок! :)Ну зачем же о себе так