Почтовый скрипт захламляет хост логами

AwFuL
На сайте с 22.06.2008
Offline
38
727

Добрый день, перебил под себя скрипт отправки почты с php.su, все отлично, почта отсылается, но одна проблема, хост за сутки умирает, идет забитие логами директории /var/spool/exim/. вот код:


//функция связи с серкаком SMTP mail.ru
function get_data($smtp_conn) {
$data="";
while($str = fgets($smtp_conn,515)) {
$data .= $str;
if(substr($str,3,1) == " ") { break; }
}
return $data;
}

//отправка почты
function otpavka_mail($email) {
$header="Date: ".date("D, j M Y G:i:s")." +0700\r\n";
$header.="From: =?utf-8?Q?".str_replace("+","_",str_replace("%","=",urlencode('awful')))."?= <awful@mail.ru>\r\n";
$header.="X-Mailer: The Bat! (v3.99.3) Professional\r\n";
$header.="Reply-To: =?utf-8?Q?".str_replace("+","_",str_replace("%","=",urlencode('awful')))."?= <awful@mail.ru>\r\n";
$header.="X-Priority: 3 (Normal)\r\n";
$header.="Message-ID: <172562218.".date("YmjHis")."@mail.ru>\r\n";
$header.="To: =?utf-8?Q?".str_replace("+","_",str_replace("%","=",urlencode('Пользователь')))."?= <$email>\r\n";
$header.="Subject: =?utf-8?Q?".str_replace("+","_",str_replace("%","=",urlencode('Регистрация')))."?=\r\n";
$header.="MIME-Version: 1.0\r\n";
$header.="Content-Type: text/plain; charset=utf-8\r\n";
$header.="Content-Transfer-Encoding: 8bit\r\n";

$text="Текст письма, бла бла бла";

$smtp_conn = fsockopen("smtp.mail.ru", 25,$errno, $errstr, 10);
if(!$smtp_conn) {print "соединение с серверов не прошло"; fclose($smtp_conn); exit;}
$data = get_data($smtp_conn);
fputs($smtp_conn,"EHLO mail.ru\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 250) {print "ошибка приветсвия EHLO"; fclose($smtp_conn); exit;}
fputs($smtp_conn,"AUTH LOGIN\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 334) {print "сервер не разрешил начать авторизацию"; fclose($smtp_conn); exit;}

fputs($smtp_conn,base64_encode("awful")."\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 334) {print "ошибка доступа к такому юзеру"; fclose($smtp_conn); exit;}


fputs($smtp_conn,base64_encode("123")."\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 235) {print "не правильный пароль"; fclose($smtp_conn); exit;}

fputs($smtp_conn,"MAIL FROM:awful@mail.ru\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 250) {print "сервер отказал в команде MAIL FROM"; fclose($smtp_conn); exit;}

fputs($smtp_conn,"RCPT TO:$email\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 250 AND $code != 251) {print "Сервер не принял команду RCPT TO"; fclose($smtp_conn); exit;}

fputs($smtp_conn,"DATA\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 354) {print "сервер не принял DATA"; fclose($smtp_conn); exit;}

fputs($smtp_conn,$header."\r\n".$text."\r\n.\r\n");
$code = substr(get_data($smtp_conn),0,3);
if($code != 250) {print "ошибка отправки письма"; fclose($smtp_conn); exit;}

fputs($smtp_conn,"QUIT\r\n");
fclose($smtp_conn);
}

В чем может быть косяк? Возможно в sendmail? Наткнулся на статью про sendmail, возможно надо настроить ее на хостинге?

Пока дышу - надеюсь!
[umka]
На сайте с 25.05.2008
Offline
456
#1

Это не скрипт захламляет, а exim.

Настройте ротацию логов. Напрмиер, с помощью syslog.

Лог в помощь!
AwFuL
На сайте с 22.06.2008
Offline
38
#2
'[umka:
;9697160']Настройте ротацию логов. Напрмиер, с помощью syslog.

Можно по подробнее?

syslog.conf


# $FreeBSD: src/etc/syslog.conf,v 1.30.2.1 2009/08/03 08:13:06 kensmith Exp $
#
# Spaces ARE valid field separators in this file. However,
# other *nix-like systems still insist on using tabs as field
# separators. If you are sharing this file between systems, you
# may want to use only tabs as field separators here.
# Consult the syslog.conf(5) manpage.
*.err;kern.warning;auth.notice;mail.crit /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.* /var/log/security
auth.info;authpriv.info /var/log/auth.log
mail.info /var/log/maillog
lpr.info /var/log/lpd-errs
ftp.info /var/log/xferlog
cron.* /var/log/cron
*.=debug /var/log/debug.log
*.emerg *
# uncomment this to log all writes to /dev/console to /var/log/console.log
#console.info /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
# touch /var/log/all.log and chmod it to mode 600 before it will work
#*.* /var/log/all.log
# uncomment this to enable logging to a remote loghost named loghost
#*.* @loghost
# uncomment these if you're running inn
# news.crit /var/log/news/news.crit
# news.err /var/log/news/news.err
# news.notice /var/log/news/news.notice
!ppp
*.* /var/log/ppp.log
!*

newsyslog.conf


# configuration file for newsyslog
# $FreeBSD: src/etc/newsyslog.conf,v 1.52.2.1 2009/08/03 08:13:06 kensmith Exp $
#
# Entries which do not specify the '/pid_file' field will cause the
# syslogd process to be signalled when that log file is rotated. This
# action is only appropriate for log files which are written to by the
# syslogd process (ie, files listed in /etc/syslog.conf). If there
# is no process which needs to be signalled when a given log file is
# rotated, then the entry for that file should include the 'N' flag.
#
# The 'flags' field is one or more of the letters: BCGJNUWZ or a '-'.
#
# Note: some sites will want to select more restrictive protections than the
# defaults. In particular, it may be desirable to switch many of the 644
# entries to 640 or 600. For example, some sites will consider the
# contents of maillog, messages, and lpd-errs to be confidential. In the
# future, these defaults may change to more conservative ones.
#
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
/var/log/all.log 600 7 * @T00 J
/var/log/amd.log 644 7 100 * J
/var/log/auth.log 600 7 100 * JC
/var/log/console.log 600 5 100 * J
/var/log/cron 600 3 100 * JC
/var/log/daily.log 640 7 * @T00 JN
/var/log/debug.log 600 7 100 * JC
/var/log/kerberos.log 600 7 100 * J
/var/log/lpd-errs 644 7 100 * JC
/var/log/maillog 640 7 * @T00 JC
/var/log/messages 644 5 100 * JC
/var/log/monthly.log 640 12 * $M1D0 JN
/var/log/pflog 600 3 100 * JB /var/run/pflogd.pid
/var/log/ppp.log root:network 640 3 100 * JC
/var/log/security 600 10 100 * JC
/var/log/sendmail.st 640 10 * 168 B
/var/log/weekly.log 640 5 1 $W6D0 JN
/var/log/wtmp 644 3 * @01T05 B
/var/log/xferlog 600 7 100 * JC
/var/log/nginx-access.log 600 7 25000 * ZC /var/run/nginx.pid
/var/log/nginx-error.log 600 7 10000 * ZC /var/run/nginx.pid
/var/log/httpd-access.log 600 7 25000 * ZC
/var/log/httpd-error.log 600 7 10000 * ZC
/var/log/httpd-suexec.log 600 7 10000 * ZC
/var/log/httpd-ssl_request.log 600 7 10000 * ZC
[umka]
На сайте с 25.05.2008
Offline
456
#3

Подробнее написано тут:

http://www.exim.org/exim-html-3.20/doc/html/spec_51.html

Если будет использоваться стандартная facility "mail", то сам syslog дополнительно крутить не нужно.

AwFuL
На сайте с 22.06.2008
Offline
38
#4
'[umka:
;9697265']Если будет использоваться стандартная facility "mail", то сам syslog дополнительно крутить не нужно.

Если я Вас правильно понел, Вы предлагаете переписать под функцию mail, и логи копиться не будут?

[umka]
На сайте с 25.05.2008
Offline
456
#5
AwFuL:
Если я Вас правильно понел, Вы предлагаете переписать под функцию mail, и логи копиться не будут?

Нет. Я предложил перенастроить exim таким образом, чтобы он логи складывал не тупо в файл, а чтобы он с помощью syslog писал в log-facility "mail". Тогда newsyslog будет ротировать логи, архивировать старые, совсем удалять совсем старые.

AwFuL
На сайте с 22.06.2008
Offline
38
#6
'[umka:
;9697491']Нет. Я предложил перенастроить exim таким образом, чтобы он логи складывал не тупо в файл, а чтобы он с помощью syslog писал в log-facility "mail". Тогда newsyslog будет ротировать логи, архивировать старые, совсем удалять совсем старые.

Пока это выше моего понимания:) Я более менее прочитал с переводчиком, но суть которую Вы хотели до меня донести, так и не уловил :(. Можете мне "разжевать" что делать?:)

[umka]
На сайте с 25.05.2008
Offline
456
#7

Тогда, думаю, самостоятельно вам лучше руки туда не запускать :)

Лучше напишите в разделе "Администрирование" и вам кто-нибудь поможет.

AwFuL
На сайте с 22.06.2008
Offline
38
#8

[umka] спасибо за помощь:)

Уважаемые модераторы, переместите пожалуйста топик в раздел Администрирование:)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий