LinuxForum.Fans
Тема

Postfix + fetchmail

Автор: Cruiser78 7 сообщений 2943 просмотров
#193895

Привет всем!

Имею "особенность" при работе фетчмайла с постфиксом. А именно - реализую задачу забора юзерской почты с их внешних почтовых ящиков. fetchmail вызывается кроном от юзера vmail командой:

text
*/10 * * * * /usr/local/share/www/postfixadmin/ADDITIONS/fetchmail.pl >/dev/null 2>&1

Все работает. Почта скачивается и по местным ящикам рассовывается. Однако...
В коде fetchmail.pl, около строки 77 есть такая запись:

text

75: $lock_file=$run_dir . "/fetchmail-all.lock";
76: $lockmgr = LockFile::Simple->make(-autoclean => 1, -max => 1);
77: $lockmgr->lock($lock_file) || log_and_die "can't lock ${lock_file}";

78: # database connect ну и так далее.

Так вот, в отдельных случаях данный лок-файл не лочится. Соответственно скрипт в этой точке помирает с указанным сообщением.
Непонятно, почему не лочится, но фиг с ним. Проблема в другом - это сообщение идет в почту руту. И забивает весь регистрационный почтовый трафик напрочь. Если там просто написать || die; то скрипт умрет, но руту все равно идет мыло об смерти скрипта. Как отучить систему посылать такое мыло? Или как научить скрипт умирать тихо, без мыла? Ну не знаток я перла...

#194117

Для такой задачи слишком маленький кусок скрипта,
выкладывай весь скрипт.
Мыло руту шлет скорее всего сам CRON либо система.

Лок-файл создается при старте и должен удалятся после нормального завершения работы скрипта.
Если лок-файл не удалился, то значит скрипт завершил работу в предыдущий раз не правильно.

#194130
mdma написал:
Для такой задачи слишком маленький кусок скрипта,
выкладывай весь скрипт.

предъявленного вполне достаточно. Дальше работа с базой. В последней строке скрипта - лок-файл удаляется. И всё.
Данный лок-файл - просто флаг, что экземпляр скрипта еще работает, и не позволяет породиться второму экземпляру. То есть, утыкаемся в этот файл и умираем, а не лезем в базу данных. То есть реалием типичный однопользовательский режим работы.

mdma написал:

Мыло руту шлет скорее всего сам CRON либо система.

Да кто бы спорил. Вот только мне этого мыла не требуется ни одного раза. Поэтому и хочу отучить почтарь от посылки этого мыла.

#194136
Cruiser78 написал:
Да кто бы спорил. Вот только мне этого мыла не требуется ни одного раза. Поэтому и хочу отучить почтарь от посылки этого мыла.

Убери алиасы в /etc/aliases и не будет слать тебе ни чего.
Правда тогда он может ронять почту в /var/spool/mail/root например и при входе на ssh
тебя будет весело встречать приветствие:
"You have new mail in /var/spool/mail/root"

#194159
mdma написал:
Убери алиасы в /etc/aliases и не будет слать тебе ни чего.

Так другая то почта нужна. Не нужна именно эта...

#194167
Cruiser78 написал:
Так другая то почта нужна. Не нужна именно эта...

Дак ты выясни от кого почта приходит, если шлет CRON,
то в теме так и будет написано "From: Cron Daemon"
А потом уже ищи как отучить конкретно Cron отсылать мыло

#194178
mdma написал:
А потом уже ищи как отучить конкретно Cron отсылать мыло

Я решил проблему чуть иначе - убрал из скрипта конструкцию || die;
То есть вместо die сделал старый добрый if (!locked) {} на все исполняемое тело скрипта. Теперь он завершается независимо от причин завершения "штатно". И никого не провоцирует слать мыло.

Войдите или зарегистрируйтесь, чтобы ответить.