DotFiles/Mail/procmailrc

Материал из ALT Linux Wiki
< DotFiles‎ | Mail
Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


Procmail

Автораскладывалка списков рассылок

(рецепт имени ab@ в изложении raorn@):

~/.procmailrc:

:0:
* !^X-List-Administrivia:.*yes.*$
* ^List-Id:.*<\/[^>]*>$
lists/`echo $MATCH | sed -f $MAILDIR/lists.sed`

$MAILDIR/lists.sed:

# Lowercate input...
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
# ALT Linux lists
s/^\([^\.]*\)\(\.www\)\?\.\(altlinux\.\(ru\|com\|org\|net\)\|linux\.iplabs\.ru\)>\?$/alt-\1/;
t end
# LRN lists
s/^\([^\.]*\)\(\.www\)\?\.\(lrn\.\(ru\|com\|org\|net\)\|linux\.ru\.net\)>\?$/lrn-\1/;
t end
# GNU/NonGNU
s/^\([^\.]*\)\.\(non\)\?gnu\.org>\?$/gnu-\1/;
t end
# SourceForge
s/^\([^\.]*\)\.lists\.sourceforge\.net>\?$/sf-\1/;
t end
# QuakeForge
s/^\([^\.]*\)\.lists\.quakeforge\.net>\?$/qf-\1/;
t end
# Insert more patterns here...
#s/^\([^\.]*\)\.blah\.bl.ah>\?$/blah-\1/;
#t end
# Default rule - prefix list with 2-level domain name
s/^\([^\.]*\)\.\([^\.]*\.\)*\([^\.]*\)\.[^\.]*>\?$/\3-\1/;
:end

Дупобойка

Порой бывает, что у кого-то где-то что-то и тут каак ввалит... писем с одинаковым Message-Id:. Помогает опять же рецепт имени ab@ -- вносить в самое начало ~/.procmailrc ;-)

# фильтруем дупы
:0 Whc: msgid.lock
| formail -D 65536 msgid.cache

:0 a:                                                                                  
duplicates

Но у этого метода есть одно неисправимое преимущество - будут отфильтрованы все кросспосты ("останется только один").

Письма древних

От специально (спамеры) или ненароком (разгильдяи) помеченных позапрошлым годом сообщений поможет вот такая домашняя заготовка ~/.procmailrc опять же имени ab@:

# сага по Alexander Bokovoy (ALT Linux):
# Выбор почтового каталога в зависимости от даты письма
:0
*$ ^Date:\/.*
{
  INPUT = $MATCH
    LETTERDATE=`date --date="$MATCH" +"%s"`
    # Вот дата, с которой сравниваем
    ARCHIVEDATE=`date --date="7 days ago" +"%s"`
    ARCHIVEIT=`echo "$LETTERDATE < $ARCHIVEDATE" | bc`

  :0
   * ARCHIVEIT ?? 1
   {
   # Меняем почтовый каталог на архивный
        $HOME/mail/strange-old-mail
   }
}