При выполнении команды: service fetchmail start с глобальным конфигурационным файлом (/etc/fetchmail) на экран выводится \"ОК\", а фактически fetchmail оказывается не запущенным и отсутствует в списке процессов. --- --- Исправление ошибки простое. В файле /etc/rc.d/init.d/fetchmail в строке 51 достаточно поменять местами знаки амперсанда и апострофа, чтобы строка выглядела следующим образом: \"su -s /bin/sh -l fetchmail -c \'fetchmail -f /etc/fetchmailrc --nopermcheck \'&\" Оригинальная строка (неработающая) выглядит так: \"su -s /bin/sh -l fetchmail -c \'fetchmail -f /etc/fetchmailrc --nopermcheck &\'\" Подозреваю, что подобное изменение необходимо выполнить и в строке 40 (запуск от имени пользователя).
От имени пользователя fetchmail работает и без указанного изменения. Вынесение & из параметра su действительно помогает? fetchmail при этом не оказывается остановлен по TTY I/O? Каково содержимое /etc/fetchmail? Есть ли там \"set daemon NNN\"? NB: Честно говоря, даже непонятно, зачем там этот амперсанд: fetchmail сам уходит в background.
Да нет. Мы выносим & не из su, а из его параметра \'-с\'. Сам su не может отправить fetchmail в бекграунд, но при этом сам весело уходит в бекграунд, где дальше выполняет то, что прописано в параметре -c. Fetchmail сам уходит в background только в случае указания ему опции set daemon или в командной строке -d. Содержимое fetchmailrc: --===-- set no spambounce poll XXXX.XXXXX.XXXXX.XX with proto pop3 localdomains hlodin.lutsk.ua user XXXXXXXX with pass \"XXXXXXXXXXXXXXX\" to * here --===--
При отсутствии set daemon в /etc/fetchmailrc fetchmail забирает почту один раз по всем poll entries и выходит. Возможно, поэтому его в итоге не оказывается в списке процессов?
Да нет. Уже проверено. Он даже не запускается и соединение не устанавливает. У меня ведь диалап и даже при пустом ящике fetchmail \"висит\" в памяти около 10-15 секунд. Только после того, как я внес вышеописанное исправление, почта начала нормально забираться через service fetchmail start.
Радикальное решение: в /etc/fetchmailrc должна быть опция set daemon, чтобы его запускал сервис. Таким образом, во всех случаях запуска fetchmail в init-скрипте он либо успешно инициализируется и уходит в фоновый режим, либо выходит с ошибкой (чего запуск с & не позволял заметить). Если вам нужен однократный запуск fetchmail, использовать для этого fetchmail-daemon -- плохая идея (какой смысл забирать почту один раз при старте машины?). Делайте это вручную, по cron или другими средствами. Исправления пойдут в fetchmail-daemon-6.2.2-alt2.
Fixed (but see bugnotes above) in 6.2.2-alt2