Добрый день.
Поставили задачу. Удалять почту с 15 внешних ящиках. Как это можно автоматизировать? Под руками FreeBSD и любые скрипты (но их нет)?
Посоветуйете, господа гуру, как быть?
fetchmail? or via ssh
>fetchmail? or via sshпробовал...
но там вопрос, как его настроить. Я его запускаю и мне пишет :
#fetchmail
fetchmail: ПРЕДУПРЕЖДЕНИЕ: Запуск под root'ом не приветствуется.
сбой gethostbyname для ServerPapirus
hostname nor servname provided, or not knownНевозможно найти свой собственный хост в базе данных хостов, чтобы определить его!
Пытаемся продолжить с неопределённым именем хоста.
НЕ СООБЩАЙТЕ о нарушенных заголовках Received:, строках HELO/EHLO или подобных проблемах!
Вместо этого ИСПРАВЬТЕ свой /etc/hosts, DNS, NIS или LDAP.
fetchmail: не были указаны почтовые серверы.
а гугл на что? там конфиг и сама настройка очень простая :-)
http://www.lissyara.su/?id=1433 посмотрите к примеру....
А еще лучше официальную документаци почитать...
>http://www.lissyara.su/?id=1433 посмотрите к примеру....Эту статью и читал.
Есть проблемы:
1. Можно ли сделать что бы fetchmail не куда почту не складывал - она мне не нужна.
2. выдвет ошибку
# fetchmail
fetchmail: ПРЕДУПРЕЖДЕНИЕ: Запуск под root'ом не приветствуется.
fetchmail: не были указаны почтовые серверы.
Научится задавать правильно вопросы для начала. Я могу сходу предположить 5 вариантов того, что подходит под "Удалять почту с 15 внешних ящиках":
1. ящик является доступным для внешнего мира, сервер ваш, прямой доступ к файлам/базе
2. ящик является доступным для внешнего мира, сервер ваш, но доступ через pop/imap
3. ящик находится на внешнем сервере, доступ по POP, задача удалить не забирая
4. ящик находится на внешнем сервере, доступ по IMAP, задача переместить в trash
5. ящик находится на внешнем сервере, доступ по IMAP, задача удалить полностью
Ящики находятся на внешних серверах, протокол POP3.
Рекомендую http://search.cpan.org/~gbarr/libnet-1.22/Net/POP3.pm даже без малейшего знания perl из synopsis должно быть понятно как получить результат :)Но на всякий случай пример
#!/usr/bin/perl -w
use strict;
use Net::POP3;my @boxes=(['host1', 'user1', 'passwd1'],);#заполните массив
foreach my $box (@boxes) {
my $pop = Net::POP3->new($box->[0]);
if ($pop->login($box->[1],$box->[2])>0) {
my $msges = $pop->list;
$pop->delete($_) foreach keys %$msges;
} else {
print "Can't login to @$box\n";
}
}
А расшифруй этистроки плз, особенно вторуюuse strict;
use Net::POP3;
Подключить модуль Net::POP3, ЕМНИП идет в дефолтном наборе, в крайнем случае можно доставить отдельно. На всякий случай уточню, что выше был дан набросок скрипта, а не команды для выполнения в шелле.
>Ящики находятся на внешних серверах, протокол POP3.У меня с одного pop3 ящика fetchmail-ом вот такой фрагмент удаляет:
echo "\
poll $SERVER proto POP3 timeout 1800 \
auth password user $USR password $PSS \
limit 1 limitflush batchlimit 1 expunge 100 \
bsmtp - nokeep fetchall" \
| fetchmail -v -f - >>file.log 2>&1 &Несколько ящиков - или цикл на шеле или длинная "конфигурация" о нескольких user-ах.