При попытке отправить письмо PHP-скриптом, mail() тормозит около минуты. Затем письмо все же отправляется... Подскажите пожалуйста, что можно сделать? Sendmail никогда не настраивал, плохо представляю, в чем может быть проблема.
В логах вот что:Oct 7 17:14:16 a2 sm-mta[463]: o97DCjR4000435: to=<bartwell@XXX.ru>, ctladdr=<user@YYY.ru> (4832/4832), delay=00:01:11, xdelay=00:01:10, mailer=esmtp, pri=30404, relay=mail.XXX.ru. [111.111.111.111], dsn=2.0.0, stat=Sent (OK id=1P3qG4-0004MQ-RE)
> При попытке отправить письмо PHP-скриптом, mail() тормозит около минуты. Затем письмо все
> же отправляется... Подскажите пожалуйста, что можно сделать? Sendmail никогда не настраивал,
> плохо представляю, в чем может быть проблема.
> В логах вот что:
>Oct 7 17:14:16 a2 sm-mta[463]: o97DCjR4000435: to=<bartwell@XXX.ru>, ctladdr=<user@YYY.ru>
> (4832/4832), delay=00:01:11, xdelay=00:01:10, mailer=esmtp, pri=30404, relay=mail.XXX.ru.
> [111.111.111.111], dsn=2.0.0, stat=Sent (OK id=1P3qG4-0004MQ-RE)Скорее всего, проблема с разрешением имен. Более вероятно, что именно локального имени (если в принципе dns работает и внешние имена резолвятся).
Проверь, резолвится ли твой внешний ip-адрес на этой машине. dig ptr -x твой-ip
> Проверь, резолвится ли твой внешний ip-адрес на этой машине. dig ptr -x
> твой-ipВыдает информацию об IP, без ошибок. Может можно еще где-то что-то посмотреть?
>> Проверь, резолвится ли твой внешний ip-адрес на этой машине. dig ptr -x
>> твой-ip
> Выдает информацию об IP, без ошибок. Может можно еще где-то что-то посмотреть?На моей практике при отправке sendmail тупить начинает когда:
1. Включены проверки DNSBL (либо их много, либо скорость инета не айс)
2. Спам-фильтрНо минута - это очень долго
Спам-фильтра нет... Вообще, вроде бы настройка дефолтная: как сервер хостер сдал после установки системы, так sendmail никто и не трогал. Да и в целом, на этом сервере почта на прием не используется, нужна только отправка из скриптов. Может можно что-то как диагностировать?
Sendmailовский mc файл можете показать?
Если я правильно все понял, то вот содержимое файла /etc/mail/freebsd.mc:divert(-1)
#
# Copyright (c) 1983 Eric P. Allman
# Copyright (c) 1988, 1993
#<----->The Regents of the University of California. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
# must display the following acknowledgement:
#<----->This product includes software developed by the University of
#<----->California, Berkeley and its contributors.
# 4. Neither the name of the University nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
##
# This is a generic configuration file for FreeBSD 5.X and later systems.
# If you want to customize it, copy it to a name appropriate for your
# environment and do the modifications there.
#
# The best documentation for this .mc file is:
# /usr/share/sendmail/cf/README or
# /usr/src/contrib/sendmail/cf/README
#divert(0)
VERSIONID(`$FreeBSD: src/etc/sendmail/freebsd.mc,v 1.30.2.4 2007/11/22 16:20:01 gshapiro Exp $')
OSTYPE(freebsd6)
DOMAIN(generic)FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
FEATURE(blacklist_recipients)
FEATURE(local_lmtp)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')dnl Uncomment to allow relaying based on your MX records.
dnl NOTE: This can allow sites to use your server as a backup MX without
dnl your permission.
dnl FEATURE(relay_based_on_MX)dnl DNS based black hole lists
dnl --------------------------------
dnl DNS based black hole lists come and go on a regular basis
dnl so this file will not serve as a database of the available servers.
dnl For that, visit
dnl http://directory.google.com/Top/Computers/Internet/Abuse/Spa.../dnl Uncomment to activate Realtime Blackhole List
dnl information available at http://www.mail-abuse.com/
dnl NOTE: This is a subscription service as of July 31, 2001
dnl FEATURE(dnsbl)
dnl Alternatively, you can provide your own server and rejection message:
dnl FEATURE(dnsbl, `blackholes.mail-abuse.org', `"550 Mail from " $&{client_addr} " rejected, see http://mail-abuse.org/cgi-bin/lookup?" $&{client_addr}')dnl Dialup users should uncomment and define this appropriately
dnl define(`SMART_HOST', `your.isp.mail.server')dnl Uncomment the first line to change the location of the default
dnl /etc/mail/local-host-names and comment out the second line.
dnl define(`confCW_FILE', `-o /etc/mail/sendmail.cw')
define(`confCW_FILE', `-o /etc/mail/local-host-names')dnl Enable for both IPv4 and IPv6 (optional)
DAEMON_OPTIONS(`Name=IPv4, Family=inet')
DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Modifiers=O')define(`confBIND_OPTS', `WorkAroundBrokenAAAA')
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')
MAILER(local)
MAILER(smtp)
Возможно он ищет IDENTпопробуйте добавить в него
define(`confTO_IDENT', `0')dnlСоздайте новый конфиг
mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf_
m4 /etc/mail/freebsd.mc > /etc/mail/sendmail.cfи перезапустите сэндмэйл
Не помогает... Симптомы те же самые, ничего не поменялось.
> Не помогает... Симптомы те же самые, ничего не поменялось.Попробуйте еще добавить в мс файл
FEATURE(`delay_checks')
хотя оно помогает при time out.... Но чем черт не шутит)
> Попробуйте еще добавить в мс файл
> FEATURE(`delay_checks')
> хотя оно помогает при time out.... Но чем черт не шутит)Надо попробовать :)
включите полное логирование исходящих пакетов, т.о. вы сможете определить, куда стучится sendmail в течение этой минуты.
> включите полное логирование исходящих пакетов, т.о. вы сможете определить, куда стучится
> sendmail в течение этой минуты.А как это сделать?
f.e., я использую для этого iptables
> f.e., я использую для этого iptablesПонял, спасибо, вариант.
> При попытке отправить письмо PHP-скриптом, mail() тормозит около минуты.
> плохо представляю, в чем может быть проблема.Тормозить может и принимающая сторона ...
> Тормозить может и принимающая сторона ...Да не, тут куда не отправь тормозит...
> При попытке отправить письмо PHP-скриптом, mail() тормозит около минуты. Затем письмо все
> же отправляется... Подскажите пожалуйста, что можно сделать? Sendmail никогда не настраивал,
> плохо представляю, в чем может быть проблема.
> В логах вот что:
>Oct 7 17:14:16 a2 sm-mta[463]: o97DCjR4000435: to=<bartwell@XXX.ru>, ctladdr=<user@YYY.ru>
> (4832/4832), delay=00:01:11, xdelay=00:01:10, mailer=esmtp, pri=30404, relay=mail.XXX.ru.
> [111.111.111.111], dsn=2.0.0, stat=Sent (OK id=1P3qG4-0004MQ-RE)сперва надо отделить мух от котлет:
- выяснить в чем проблема: в работе скриптов php или sendmail, потом
пилить одно, либо другое- sendmail у вас вовсе не настроен, если торможение на различные адреса (желательно
проверять реальные, а не freemail), то вероятно переходить к следующему пункту
- смотреть dns
- смотреть объем отправляемых сообщений и ширину вашего канала и дальше...
- и тд и тп
Ну да, проблема все-таки не в PHP, а именно в Sendmail.А как вообще настроить Sendmail только на отправку писем для скриптов? Прием мне не нужен. Может быть готовый конфиг есть или статья?
> Ну да, проблема все-таки не в PHP, а именно в Sendmail.ну так настройте и будет mail(php) работать без проблем
> А как вообще настроить Sendmail только на отправку писем для скриптов? Прием
> мне не нужен. Может быть готовый конфиг есть или статья?:) подход к настройке самого sendmail не изменится от того outgoing он или в нормальном
рабочем режиме -bd на real_ip:25Если у вас есть выход на внешний почтовый релей, например провайдера, то
установите ssmtp из портов и все дела: /usr/ports/mail/ssmtp
> :) подход к настройке самого sendmail не изменится от того outgoing он
> или в нормальном
> рабочем режиме -bd на real_ip:25Спасибо, не знал. Значит, похоже все же придется влазить в его изучение...
> Если у вас есть выход на внешний почтовый релей, например провайдера, то
> установите ssmtp из портов и все дела: /usr/ports/mail/ssmtpИнтересное решение, спасибо. Но, к сожалению, в данном случае не подходит, нужно свое...
>> :) подход к настройке самого sendmail не изменится от того outgoing он
>> или в нормальном
>> рабочем режиме -bd на real_ip:25
> Спасибо, не знал. Значит, похоже все же придется влазить в его изучение...
>> Если у вас есть выход на внешний почтовый релей, например провайдера, то
>> установите ssmtp из портов и все дела: /usr/ports/mail/ssmtp
> Интересное решение, спасибо. Но, к сожалению, в данном случае не подходит, нужно
> свое...в смысле свое, в системной поставке? порты для того и существуют чтобы администратор
мог построить то что нужно ему и/или для рабочей ситуации!в настройках ssmtp если память не изменяет, всего четыре строчки...
и получаем outgoing only smtp сервис
> в смысле свое, в системной поставке?Не, в смысле, чтобы можно было с произвольного адреса e-mail письма отправлять. Да и хостер релей не предоставляет...
>> в смысле свое, в системной поставке?
> Не, в смысле, чтобы можно было с произвольного адреса e-mail письма отправлять.что значит с произвольного? Open Relay?
> Да и хостер релей не предоставляет...
>>> в смысле свое, в системной поставке?
>> Не, в смысле, чтобы можно было с произвольного адреса e-mail письма отправлять.
> что значит с произвольного? Open Relay?
>> Да и хостер релей не предоставляет...Ну просто что-то вроде небольшого хостинга и каждый пользователь должен иметь возможность подставить любой адрес e-mail в поле "От кого".