<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki2.linuxformat.ru/index.php?action=history&amp;feed=atom&amp;title=LXF135%3AProcmail</id>
		<title>LXF135:Procmail - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki2.linuxformat.ru/index.php?action=history&amp;feed=atom&amp;title=LXF135%3AProcmail"/>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF135:Procmail&amp;action=history"/>
		<updated>2026-05-14T01:04:48Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.11.1</generator>

	<entry>
		<id>http://wiki2.linuxformat.ru/index.php?title=LXF135:Procmail&amp;diff=12720&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление, иллюстрация</title>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF135:Procmail&amp;diff=12720&amp;oldid=prev"/>
				<updated>2011-10-09T16:36:43Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление, иллюстрация&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;: '''Hardcore Linux''' Проверьте себя на крутом проекте для продвинутых пользователей&lt;br /&gt;
&lt;br /&gt;
==''Procmail'': Поч­те в по­мощь==&lt;br /&gt;
&lt;br /&gt;
: '''Ша­шанк Шар­ма''' cнова рез­вит­ся в сияю­щем раю ко­ман­дной стро­ки и на­хо­дит ''Procmail'' иде­аль­ным ре­ше­ни­ем для фильт­ра­ции поч­ты.&lt;br /&gt;
&lt;br /&gt;
Необ­хо­ди­мость от­дель­но­го ре­шения для фильт­ра­ции поч­ты пря­мо про­пор­цио­наль­на ко­ли­че­ству пи­сем в ва­шем ящи­ке. ''Procmail'' – мощ­ная ути­ли­та об­ра­бот­ки со­об­щений, спо­соб­ная про­из­во­дить сор­ти­ров­ку поч­ты на осно­ве лю­бо­го ко­ли­че­ства пра­вил. Вхо­дя­щие со­об­щения мож­но рас­пре­де­лить по пап­кам на осно­ве за­ранее за­дан­но­го кри­те­рия, та­ко­го как те­ма со­об­щения, от­пра­ви­тель и т. д. При­менение в пра­ви­лах ре­гу­ляр­ных вы­ра­жений и воз­мож­ность ис­поль­зо­вания мно­же­ства пра­вил для сор­ти­ров­ки пи­сем пре­вра­ща­ют ''Procmail'' в весь­ма точ­ный поч­то­вый фильтр. Кро­ме то­го, он лег­ко от­сеи­ва­ет спам и со­об­щения с ис­пол­няе­мы­ми фай­ла­ми во вло­жении, а так­же вы­сту­па­ет в ро­ли иде­аль­но­го ав­то­от­вет­чи­ка.&lt;br /&gt;
&lt;br /&gt;
Так как ак­тив­ная раз­ра­бот­ка ''Procmail'' пре­кра­ще­на, он по­став­ля­ет­ся по умол­чанию лишь в немно­гих ди­ст­ри­бу­ти­вах. Но пусть это вас не бес­по­ко­ит: он весь­ма ста­би­лен и по­пу­ля­рен, и его лег­ко до­быть в ре­по­зи­то­ри­ях.&lt;br /&gt;
&lt;br /&gt;
На ти­пич­ном поч­то­вом сер­ве­ре од­но­вре­мен­но ра­бо­та­ют мно­же­ство раз­лич­ных ути­лит и тех­но­ло­гий. Они вклю­ча­ют аген­та достав­ки поч­ты (MDA), аген­та по­лу­чения поч­ты (MRA) и поль­зо­ва­тель­ско­го поч­то­во­го аген­та (MUA). По­следние – это поч­то­вые кли­ен­ты, ти­па ''Mutt'' или ''Thunderbird''. Аген­ты по­лу­чения поч­ты – про­грам­мы вро­де ''Fetchmail'' или ''Getmail''; они по­лу­ча­ют со­об­щения с уда­лен­ной учет­ной запи­си. ''Procmail'' – агент достав­ки поч­ты, от­ве­чаю­щий за сор­ти­ров­ку со­об­щений и пе­ре­да­чу их в поч­то­вый ящик в за­ви­си­мо­сти от на­стро­ек.&lt;br /&gt;
&lt;br /&gt;
За дей­ствия ''Procmail'' по фильт­ра­ции поч­ты от­ве­ча­ет файл '''.procmailrc''' в ва­шем до­машнем ка­та­ло­ге. Пра­ви­ла в этом фай­ле на­зы­ва­ют­ся ре­цеп­та­ми. За­дол­го до то­го, как лю­ди на­ча­ли об­менивать­ся филь­ма­ми и му­зы­кой, они об­менива­лись друг с дру­гом ре­цеп­та­ми ''Procmail'', ко­то­рые все еще мож­но най­ти с по­мо­щью обыч­но­го по­иско­ви­ка. Со вре­менем ва­ши ре­цеп­ты вы­растут и из­ме­нят­ся, но, взгля­нув на то, как дру­гие поль­зу­ют­ся ''Procmail'', вы смо­же­те луч­ше об­ра­бо­тать свои пись­ма.&lt;br /&gt;
&lt;br /&gt;
В за­ви­си­мо­сти от на­стро­ек ди­ст­ри­бу­ти­ва, мо­жет по­тре­бо­вать­ся соз­дать и файл '''.forward''' – так вы га­ран­ти­руе­те, что ''Procmail'' при­мет­ся за об­ра­бот­ку ва­ших пи­сем до их по­па­дания в ваш поч­то­вый ящик. На­бе­ри­те&lt;br /&gt;
&lt;br /&gt;
 |/usr/bin/procmail&lt;br /&gt;
&lt;br /&gt;
в тек­сто­вом ре­дак­то­ре и со­храните файл под именем '''.forward''' в сво­ем до­машнем ка­та­ло­ге. Все вхо­дя­щие со­об­щения бу­дут пе­ре­на­прав­ле­ны в ''Procmail''.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF135_84_1.jpg|300px]] Файл '''procmail.log''' со­об­ща­ет, в ка­кую пап­ку по­пал ка­ж­дый файл – ищи­те там со­об­ще­ния, уго­див­шие не ту­да.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
За кон­фи­гу­ра­цию боль­шин­ства ути­лит команд­ной стро­ки от­ве­ча­ют фай­лы на­строй­ки, ко­то­рые хра­нят­ся в ка­та­ло­ге '''/etc/'''. Од­на­ко у обыч­ных поль­зо­ва­те­лей нет прав досту­па или при­ви­ле­гий для ре­дак­ти­ро­вания фай­лов, при­над­ле­жа­щих root. По­это­му ути­ли­ты вро­де ''Procmail'' и ''Fetchmail'' по­зво­ля­ют поль­зо­ва­те­лям соз­да­вать соб­ствен­ные фай­лы на­строй­ки в их до­машних ка­та­ло­гах.&lt;br /&gt;
&lt;br /&gt;
На на­шем уро­ке мы восполь­зу­ем­ся ''Procmail'' для фильт­ра­ции пи­сем, по­лу­чен­ных из поч­то­во­го ящи­ка Gmail. И ''Fetchmail'', и Gmail под­дер­жи­ва­ют IMAP, но при за­груз­ке со­об­щений из поч­то­во­го ящи­ка Gmail мы бу­дем ис­поль­зо­вать про­то­кол POP, и ''Procmail'' смо­жет от­фильт­ро­вать со­об­щения.&lt;br /&gt;
&lt;br /&gt;
===По­лу­чение поч­ты===&lt;br /&gt;
&lt;br /&gt;
Пер­вый шаг в на­строй­ке ''Fetchmail'' для взаи­мо­дей­ствия с уда­лен­ной поч­то­вой учет­ной запи­сью – соз­дание фай­ла '''.fetcmailrc''' в ва­шем до­машнем ка­та­ло­ге. От­крой­те тек­сто­вый ре­дак­тор и вве­ди­те сле­дую­щий текст:&lt;br /&gt;
&lt;br /&gt;
 poll pop.gmail.com with proto POP3 and options no dns&lt;br /&gt;
 user ‘usernamea@gmail.com’ with password ‘ваш_па­роль’&lt;br /&gt;
 is ‘user’ here&lt;br /&gt;
 options keep ssl sslcertck sslcertpath ‘/etc/ssl/certs’&lt;br /&gt;
 mda ‘/usr/bin/procmail -d %T’&lt;br /&gt;
&lt;br /&gt;
Это все, что нуж­но от вас ''Fetchmail''. Мо­жет так­же по­тре­бо­вать­ся еще вклю­чить пе­ре­на­прав­ление POP в на­строй­ках уда­лен­ной учет­ной запи­си (для Gmail и по­доб­ных сер­ви­сов). Пер­вые две стро­ки – на са­мом де­ле од­на; мы раз­би­ли ее для удоб­ства. Она ве­лит ''Fetchmail'' свя­зать­ся с учет­ны­ми запи­ся­ми username@gmail.com или username@yourisp.com и сбро­сить поч­ту локаль­но­му поль­зо­ва­те­лю. В треть­ей стро­ке есть несколь­ко оп­ций. Пер­вая, '''keep''', не ве­лит ''Fetchmail'' уда­лять со­об­щения с уда­лен­ной учет­ной запи­си. Без этой оп­ции ''Fetchmail'' уда­лит с учет­ной запи­си все со­об­щения, ко­то­рые за­гру­зит. Осталь­ные оп­ции от­но­сят­ся к шиф­ро­ванию SSL. По­след­няя стро­ка фраг­мен­та ко­да ве­лит ''Fetchmail'' пе­ре­на­пра­вить все вхо­дя­щие со­об­щения ''Procmail''.&lt;br /&gt;
&lt;br /&gt;
Су­ще­ству­ет два спо­со­ба на­строй­ки ав­то­ма­ти­че­ско­го по­лу­чения но­вых со­об­щений ва­шей учет­ной запи­си ''Fetchmail''. Пер­вый – до­ба­вить стро­ку &lt;br /&gt;
&lt;br /&gt;
 set daemon 300&lt;br /&gt;
&lt;br /&gt;
в файл '''~/.fetchmailrc'''. Это за­ста­вит ''Fetchmail'' про­ве­рять на­ли­чие но­вых пи­сем ка­ж­дые пять ми­нут (300 се­кунд). Ус­та­но­ви­те под­хо­дя­щий ин­тер­вал на свое ус­мот­ре­ние. Вто­рой спо­соб – соз­дать за­да­ние ''Cron'' для за­пус­ка ''Fetchmail''.&lt;br /&gt;
&lt;br /&gt;
За­пус­ти­те c''rontab -e'' из тер­ми­на­ла и вве­ди­те&lt;br /&gt;
&lt;br /&gt;
 */5 * * * * /usr/bin/fetchmail -s&lt;br /&gt;
&lt;br /&gt;
в файл '''crontab'''. ''Fetchmail'' бу­дет за­пус­кать­ся раз в пять ми­нут в «ти­хом» ре­жи­ме – то есть все со­об­ще­ния о хо­де это­го про­цес­са и ре­зуль­та­те бу­дут скры­ты и не по­па­дут в стан­дарт­ный вы­вод.&lt;br /&gt;
&lt;br /&gt;
''Fetchmail'' очень строг к пра­вам дос­ту­па к фай­лу '''~/.fetchmailrc''' и тре­бу­ет, что­бы они бы­ли не вы­ше '''710'''. По­это­му из­ме­ни­те пра­ва на '''710''' или мень­шие ко­ман­дой ''chmod'' та­ким об­ра­зом:&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=LXF135_85_1.jpg|300px Мож­но на­стро­ить ''Evolution'' на счи­ты­ва­ние пи­сем, от­фильт­ро­ван­ных ''Procmail'', из поч­то­во­го ящи­ка '''Mbox'''.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
 chmod 710 ~/.fetchmailrc&lt;br /&gt;
&lt;br /&gt;
Файл на­строй­ки '''~/.fetchmailrc''' мож­но про­ве­рить ко­ман­дой&lt;br /&gt;
&lt;br /&gt;
 fetchmail -vk&lt;br /&gt;
&lt;br /&gt;
с тер­ми­на­ла. ''Fetchmail'' за­пус­тит­ся в под­роб­ном ре­жи­ме (оп­ция '''-v'''), а пись­ма не бу­дут уда­ле­ны с уда­лен­ной учет­ной за­пи­си. Оп­цию '''-k''' (keep) мож­но не ука­зы­вать, ес­ли она уже есть в фай­ле '''~/.fetchmailrc'''.&lt;br /&gt;
&lt;br /&gt;
Сле­дую­щий шаг – со­об­щить ''Procmail'' о раз­лич­ных ре­цеп­тах фильт­ра­ции. Но пре­ж­де чем соз­да­вать пра­ви­ла для сор­ти­ров­ки пи­сем от дру­зей, се­мьи и из спи­сков рас­сыл­ки, нуж­но соз­дать уни­каль­ные ка­та­ло­ги для ка­ж­дой из этих ка­те­го­рий. Мы хо­тим, что­бы ''Procmail'' дос­тав­лял все со­об­ще­ния в ка­та­лог '''~/Mail''', по­это­му соз­да­дим внут­ри не­го до­пол­ни­тель­ные ди­рек­то­рии.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Заголовок=Скорая помощь|Содержание=При за­пус­ке в «ти­хом» ре­жи­ме (оп­ция '''-s''') ''Fetchmail'' все рав­но вы­во­дит все со­об­ще­ния об ошиб­ках.|Ширина=200px}}&lt;br /&gt;
 &lt;br /&gt;
 mkdir ~/Mail&lt;br /&gt;
 mkdir ~/Mail/new&lt;br /&gt;
 mkdir ~/Mail/family&lt;br /&gt;
 mkdir ~/Mail/lists&lt;br /&gt;
 mkdir ~/Mail/lists/fedora-devel&lt;br /&gt;
 mkdir ~/Mail/lists/debian-legal&lt;br /&gt;
 mkdir ~/Mail/lists/gnome&lt;br /&gt;
&lt;br /&gt;
Те­перь мы го­то­вы за­пол­нить файл '''~/.procmailrc''' пра­ви­ла­ми сор­ти­ров­ки вхо­дя­щих со­об­ще­ний. В са­мом ба­зо­вом ва­ри­ан­те файл '''~/.procmailrc''' дол­жен со­дер­жать сле­дую­щую ин­фор­ма­цию:&lt;br /&gt;
&lt;br /&gt;
 SHELL=/bin/bash&lt;br /&gt;
 PATH=/usr/sbin:/usr/bin&lt;br /&gt;
 MAILDIR=$HOME/Mail&lt;br /&gt;
 DEFAULT=$MAILDIR/new&lt;br /&gt;
 LOGFILE=$HOME/procmail.log&lt;br /&gt;
 LOG=””&lt;br /&gt;
 VERBOSE=yes&lt;br /&gt;
&lt;br /&gt;
Вы­ше при­ве­де­ны толь­ко пе­ре­мен­ные, со­дер­жа­щие дан­ные для ра­бо­ты ''Procmail''. '''MAILDIR''' — ра­бо­чий ка­та­лог для ''Procmail''; внут­ри него бу­дет хранить­ся вся поч­та. Пись­ма, не от­но­ся­щие­ся ни к од­но­му из че­ты­рех ре­цеп­тов, по­па­да­ют в '''DEFAULT'''. За­тем мы при­сваи­ва­ем имя фай­ла жур­на­ла, в ко­то­рый ''Procmail'' бу­дет запи­сы­вать от­ла­доч­ную ин­фор­ма­цию, пе­ре­мен­ной '''LOGFILE'''. Уста­нов­ка '''VERBOSE''' в '''yes''' га­ран­ти­ру­ет, что ''Procmail'' со­хранит под­роб­ную запись сво­их дей­ствий – это по­мо­га­ет в от­лад­ке сво­их ре­цеп­тов. Пе­ре­мен­ная '''PATH''' за­да­ет пап­ку, где ''Procmail'' ищет все про­грам­мы, нуж­ные ему как часть ре­цеп­та. На­при­мер, вам по­тре­бу­ет­ся про­иг­ры­ва­тель, что­бы воспро­из­ве­сти бравур­ный марш при по­лу­чении то­го дол­го­ждан­но­го пред­ло­жения о ра­бо­те.&lt;br /&gt;
&lt;br /&gt;
Ка­ж­дый из ре­цеп­тов мо­жет со­дер­жать про­из­воль­ное ко­ли­че­ство пра­вил для вы­бо­ра со­об­щений. Они вклю­ча­ют от­пра­ви­те­ля или по­лу­ча­те­ля, те­му со­об­щения или да­же его со­дер­жи­мое. Как толь­ко со­об­щение ото­бра­но на осно­ве оп­ре­де­лен­ных ва­ми пра­вил, мож­но за­ста­вить ''Procmail'' вы­полнить над ним оп­ре­де­лен­ные дей­ствия: на­при­мер, пе­ре­местить в за­дан­ную пап­ку, от­ве­тить от­пра­ви­те­лю, пе­ре­на­пра­вить со­об­щение на дру­гой ад­рес и т. д.&lt;br /&gt;
&lt;br /&gt;
===Ана­то­мия ре­цеп­та===&lt;br /&gt;
&lt;br /&gt;
Ка­ж­дый ре­цепт ''Procmail'' со­сто­ит из трех частей. Все ре­цеп­ты долж­ны на­чи­нать­ся с сим­во­ла двое­то­чия (''':'''). Сле­дую­щая за этой стро­ка со­дер­жит усло­вия или пра­ви­ла от­бо­ра со­об­щений, и, на­конец, тре­тья стро­ка го­во­рит ''Procmail'', ка­кое дей­ствие пред­при­нять, ес­ли най­де­но со­об­щение, со­от­вет­ствую­щее пра­ви­лам в ре­цеп­те.&lt;br /&gt;
&lt;br /&gt;
 :0:&lt;br /&gt;
 * ^From:.*(linuxlala\@yahoo\.co\.in|geekybodhi@gmail\.com)&lt;br /&gt;
 $MAILDIR/family&lt;br /&gt;
&lt;br /&gt;
Этот ре­цепт ве­лит ''Procmail'' про­ве­рить все вхо­дя­щие пись­ма на со­от­вет­ствие усло­вию (вто­рая стро­ка) и пе­ре­местить все пись­ма, удов­ле­тво­ряю­щие усло­вию, в ка­та­лог ''family''. Пра­ви­ла на­чи­на­ют­ся с сим­во­ла '''*. ^From''' — встро­ен­ный мак­рос ''Procmail.'' '''^To_''' и '''^Subject''' – по­хо­жие встро­ен­ные мак­ро­сы, ко­то­рые об­лег­ча­ют по­иск со­от­вет­ствую­щих со­об­щений. Стро­ка, сле­дую­щая за стро­кой усло­вия – стро­ка дей­ствия. В боль­шин­стве слу­ча­ев стро­ки дей­ствия про­сто го­во­рят ''Procmail'', в ка­кую пап­ку по­местить со­об­щения.&lt;br /&gt;
&lt;br /&gt;
За­ме­ти­ли сим­вол '''|''' в стро­ке усло­вия? Он необ­хо­дим в тех слу­ча­ях, когда в усло­вие нуж­но до­ба­вить несколь­ко про­ве­рок. Здесь мы хо­тим про­ве­рить на со­от­вет­ствие усло­вию '''^From''' мно­же­ство ад­ре­сов. По­это­му все со­об­щения с ад­ре­сов linuxlala@yahoo.co.in и geekybodhi@gmail.com бу­дут достав­ле­ны в пап­ку '''family'''.&lt;br /&gt;
&lt;br /&gt;
По­ря­док ре­цеп­тов в фай­ле '''~/.procmailrc''' очень ва­жен. Все вхо­дя­щие со­об­щения про­ве­ря­ют­ся на со­от­вет­ствие при­ве­ден­ным ре­цеп­там, по­ка не об­на­ру­жит­ся сов­па­дение. И как толь­ко со­общение удов­ле­тво­рит усло­вию ре­цеп­та, над ним немед­лен­но вы­пол­ня­ют­ся дей­ствия. По­это­му ре­цепт по умол­чанию идет по­следним в спи­ске. Так, ес­ли ка­кое-то со­об­щение со­от­вет­ству­ет бо­лее чем од­но­му ре­цеп­ту, бу­дут вы­полнены дей­ствия пер­во­го ре­цеп­та из фай­ла '''~/.procmailrc''', а до дру­гих ре­цеп­тов де­ло никогда не дой­дет.&lt;br /&gt;
&lt;br /&gt;
В стро­ке дей­ствия не нуж­но ука­зы­вать пол­ный путь до ка­та­ло­га, как это сде­ла­ли мы. Ес­ли вы уже оп­ре­де­ли­ли пе­ре­мен­ную '''$MAILDIR''', доста­точ­но ис­поль­зо­вать '''family''' вме­сто '''$MAILDIR/family'''. Со­от­вет­ствую­щие со­об­щения все рав­но по­па­дут в долж­ную пап­ку, неза­ви­си­мо от то­го, ука­зан ли пол­ный путь или толь­ко имя ка­та­ло­га.&lt;br /&gt;
&lt;br /&gt;
Так­же об­ра­ти­те внимание на сим­вол '''\''' пе­ред '''@''' и '''.''' в ад­ре­се элек­трон­ной поч­ты, так как два этих сим­во­ла – рег­ла­мен­ти­ро­ван­ные клю­че­вые сло­ва.&lt;br /&gt;
&lt;br /&gt;
Над пись­мом мож­но вы­полнить несколь­ко про­ве­рок, что­бы га­ран­ти­ро­вать от­сут­ствие лож­ных сра­ба­ты­ваний. Сле­дую­щий ре­цепт про­ве­рит по­ля '''From''' и '''Subject''' пе­ред вы­полнением дей­ствий над со­от­вет­ствую­щи­ми со­об­щения­ми.&lt;br /&gt;
&lt;br /&gt;
 :0:&lt;br /&gt;
 * ^Subject:.*techrepublic&lt;br /&gt;
 ^From:techrepublic@direct.cnet.com&lt;br /&gt;
 $MAILDIR/lists/techrepublic&lt;br /&gt;
&lt;br /&gt;
По­ка мы рас­смот­ре­ли толь­ко про­стей­шие ре­цеп­ты, но при необ­хо­ди­мо­сти мож­но вы­пол­нять и более одной опе­ра­ции над со­об­щением. На­при­мер, ес­ли вы хо­ти­те пе­ре­на­пра­вить дру­гу все со­об­щения об уро­ках фран­цуз­ско­го и со­хранить ко­пию се­бе, мо­же­те восполь­зо­вать­ся сле­дую­щим ре­цеп­том: &lt;br /&gt;
&lt;br /&gt;
 # forward French lessons to a friend&lt;br /&gt;
 #and also keep a copy&lt;br /&gt;
 :0&lt;br /&gt;
 * ^Subject:.*(French)&lt;br /&gt;
 {&lt;br /&gt;
 :0 c&lt;br /&gt;
 ! myfriend@buddy.com&lt;br /&gt;
 :0&lt;br /&gt;
 learning&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Заголовок=Скорая помощь|Содержание=Ес­ли для по­лу­че­ния со­об­ще­ний ис­поль­зу­ет­ся Агент по­лу­че­ния поч­ты, та­кой как ''Fetchmail'', то файл '''.forward''' для пе­ре­на­прав­ле­ния со­об-­ще­ний ''Procmail'' вам не требуется.|Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Здесь вме­сто стро­ки дей­ствия ис­поль­зу­ет­ся вло­жен­ный блок (за­клю­чен в фи­гур­ные скоб­ки). В него мож­но по­местить несколь­ко ре­цеп­тов, ко­то­рые бу­дут при­ме­нять­ся толь­ко в том слу­чае, ес­ли со­об­щение со­от­вет­ству­ет ро­ди­тель­ско­му ре­цеп­ту. Ро­ди­тель­ский ре­цепт в дан­ном слу­чае – про­вер­ка на­ли­чия сло­ва ‘French’ в лю­бом месте стро­ки те­мы.&lt;br /&gt;
&lt;br /&gt;
В ка­ж­дом из ре­цеп­тов бло­ка нет ни од­но­го усло­вия. В пер­вом дей­ствии для ко­пи­ро­вания со­об­щения ис­поль­зу­ет­ся флаг '''c'''. Обыч­но, ес­ли со­об­щение со­от­вет­ству­ет пер­во­му ре­цеп­ту, над ним бу­дут вы­полнены дей­ствия толь­ко из этого ре­цеп­та. По­это­му ес­ли не ис­поль­зо­вать этот флаг, мы не смо­жем при­менить к со­об­щению дей­ствия из вто­ро­го ре­цеп­та. Воскли­ца­тель­ный знак ('''!''') пе­ред ад­ре­сом элек­трон­ной поч­ты оз­на­ча­ет, что мы хо­тим пе­ре­на­пра­вить со­об­щение на ука­зан­ный ад­рес. На­конец, вто­рой ре­цепт в бло­ке достав­ля­ет со­об­щение в ка­та­лог '''learning'''.&lt;br /&gt;
&lt;br /&gt;
===Об­ра­бот­ка спа­ма===&lt;br /&gt;
&lt;br /&gt;
По­ня­тие спа­ма или неже­ла­тель­ных со­об­щений мо­жет от­ли­чать­ся у раз­ных лю­дей. Мне не нра­вят­ся вло­жения PPT, по­это­му та­кие пись­ма все­гда от­бра­сы­ва­ют­ся. Так­же иг­но­ри­ру­ют­ся пись­ма, те­ма ко­то­рых напи­са­на за­глав­ны­ми бу­к­ва­ми, согласно ре­цеп­ту, приведенному ниже:&lt;br /&gt;
&lt;br /&gt;
 :0&lt;br /&gt;
 * ^Subject: [A-Z]&lt;br /&gt;
 /dev/null&lt;br /&gt;
&lt;br /&gt;
Вто­рой спо­соб – соз­дать «бе­лый спи­сок» из­вест­ных и до­ве­рен­ных ад­ре­са­тов и со­хра­нять в сво­ем ящи­ке со­об­ще­ния толь­ко от них:&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF135_87_1.jpg|300px]] При чте­нии поч­ты с по­мо­щью Mutt мож­но на­жать “c” для пе­ре­клю­че­ния ме­ж­ду ящи­ка­ми, в ко­то­рые сор­ти­ру­ют­ся пись­ма.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
 # Check my whitelist&lt;br /&gt;
 :0:&lt;br /&gt;
 * ? formail -x”From” -x”From:” -x”Sender:” -x”X-Sender:”&lt;br /&gt;
 -x”Reply-To:” -x”Return-Path” -x”To:” | egrep -i -f $HOME/.trusted&lt;br /&gt;
 $MAILDIR/trusted&lt;br /&gt;
&lt;br /&gt;
В этом ре­цеп­те мы вы­де­ля­ем толь­ко ука­зан­ные за­го­лов­ки с по­мо­щью ''Formail'' и пе­ре­да­ем их ути­ли­те ''egrep'', ко­то­рая за­тем сравнива­ет их с ад­ре­са­ми, пе­ре­чис­лен­ны­ми в фай­ле '''.trusted'''. ''Formail'' – внеш­няя ути­ли­та, ис­поль­зуе­мая для об­ра­бот­ки со­об­щений и вы­де­ления ин­фор­ма­ции из их за­го­лов­ков; в на­шем ре­цеп­те ее вы­вод пе­ре­да­ет­ся ''egrep''. Файл '''~/.trusted''' со­дер­жит спи­сок всех до­ве­рен­ных ад­ре­сов, а ключ '''-i''' в вы­зо­ве ''egrep'' де­ла­ет сравнение нечув­стви­тель­ным к ре­ги­ст­ру.&lt;br /&gt;
&lt;br /&gt;
В по­ряд­ке аль­тер­на­ти­вы мож­но под­дер­жи­вать спи­сок из­вест­ных на­ру­ши­те­лей и соз­дать ре­цепт, уда­ляю­щий все со­об­щения от них: про­сто за­мените файл '''.trusted''' на '''.spammers''' и от­правь­те со­об­щения в '''/dev/null''' вме­сто '''$MAILDIR/trusted'''. Но помните, что эти со­об­щения нель­зя бу­дет восста­но­вить или про­смот­реть поз­же – они ут­ра­тят­ся на­все­гда. Так­же, по­сколь­ку эти со­об­щения не пи­шут­ся в файл, бло­ки­ров­ки не тре­бу­ет­ся, по­это­му начните ре­цепт с ''':0''' вме­сто ''':0:'''.&lt;br /&gt;
&lt;br /&gt;
Ес­ли вы хо­ти­те еще тща­тельнее об­ра­ба­ты­вать спам, на­строй­те ''Procmail'' для со­вме­ст­ной ра­бо­ты со ''SpamAssassin''; тогда пе­ред на­строй­кой ''Procmail'' нуж­но уста­но­вить ''SpamAssassin''. По­сле его уста­нов­ки соз­дай­те файл '''/etc/procmailrc''', что­бы пе­ре­на­пра­вить все вхо­дя­щие со­об­щения в ''SpamAssassin'':&lt;br /&gt;
&lt;br /&gt;
 #Send message to SpamAssassin&lt;br /&gt;
 :0 fw&lt;br /&gt;
 * &amp;lt; 256000&lt;br /&gt;
 | /usr/bin/spamc&lt;br /&gt;
&lt;br /&gt;
Па­ра­метр '''fw''' в стро­ке с двое­то­чи­ем оз­на­ча­ет для ''Procmail'', что этот ре­цепт яв­ля­ет­ся фильт­ром и мо­жет из­менить ис­ход­ное со­об­щение. В стро­ке усло­вия мы ищем со­об­щения, мень­шие 256 КБ по раз­ме­ру, так как спам-со­об­щения обыч­но неве­ли­ки. Это по­мо­жет нам из­бе­жать про­вер­ки всех со­об­щений, сэ­ко­но­мив немно­го ре­сур­сов. В треть­ей стро­ке мы пе­ре­да­ем со­об­щение ''SpamAssassin''.&lt;br /&gt;
&lt;br /&gt;
Когда ''SpamAssassin'' иден­ти­фи­ци­ру­ет со­об­щение как спам, он впи­сы­ва­ет в по­ле с его те­мой спе­ци­аль­ный тэг. Итак, те­перь вы мо­же­те до­ба­вить сле­дую­щий ре­цепт в фай­ле '''~/.procmailrc''':&lt;br /&gt;
&lt;br /&gt;
 :0H:&lt;br /&gt;
 * ^X-Spam-Status:.*Yes&lt;br /&gt;
 spam&lt;br /&gt;
&lt;br /&gt;
Мож­но бы­ло бы точ­но так же на­пра­вить со­об­щение в '''/dev/null''', но луч­ше со­хранить его в локаль­ном ка­та­ло­ге: так вы смо­же­те про­смот­реть его со­дер­жи­мое, что­бы убе­дить­ся, что ни од­но со­об­щение не бы­ло оши­боч­но по­ме­че­но как спам.&lt;br /&gt;
&lt;br /&gt;
===На­строй­ка ав­то­от­вет­чи­ка===&lt;br /&gt;
&lt;br /&gt;
В ''Procmail'' очень часто ис­поль­зу­ет­ся функ­ция ав­то­от­вет­чи­ка, из­вест­но­го так­же как от­вет на вре­мя от­пуска или ''auto-reply''. В его осно­ве – ути­ли­та ''vacation'', и ес­ли она еще не уста­нов­ле­на в ва­шей систе­ме, по­ра это сде­лать. За­тем соз­дай­те в сво­ем до­машнем ка­та­ло­ге файл '''.vacation''' и вве­ди­те ту­да со­об­щение – про­сто «Я в от­пуске. Про­чту ва­ше со­об­щение, когда вер­нусь. Уда­чи!» ли­бо нечто бо­лее ви­тие­ва­тое. Со­храните файл '''.vacation'''; те­перь соз­дай­те ре­цепт для ав­то­от­вет­чи­ка:&lt;br /&gt;
&lt;br /&gt;
 :0 Whc: vacation.lock&lt;br /&gt;
 * .*for &amp;lt;linuxlala@gmail.com&amp;gt;&lt;br /&gt;
 * !^FROM_DAEMON&lt;br /&gt;
 * !^X-Loop: linuxlala@gmail.com&lt;br /&gt;
 # Store sender’s address in vacation.cache&lt;br /&gt;
 | formail -rD 8192 vacation.cache&lt;br /&gt;
 # If sender’s address not in cache, send&lt;br /&gt;
 # mail containing vacation message.&lt;br /&gt;
 :0 ehc&lt;br /&gt;
 | (formail -rA”Precedence: junk” \&lt;br /&gt;
 -A”X-Loop: linuxlala@gmail.com” ; \&lt;br /&gt;
 cat ~/.vacation \&lt;br /&gt;
 ) | /usr/lib/sendmail -oi -t&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Заголовок=Скорая помощь|Содержание=Чис­ло, сле­дую­щее за ''':''' в ре­цеп­те, оз­на­ча­ет ко­ли­че­ст­во дей­ст­вий. Сей­час оно вы­чис­ля­ет­ся ав­то­ма­ти­че­ски, но для со­вмес­ти­мо­сти все-та­ки нуж­но пи­сать ''':0'''.|Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Воз­мож­но, ре­цепт не со­всем по­ня­тен, но ес­ли раз­бить его на две части, все бу­дет оче­вид­но. Рас­смот­рим пер­вый ре­цепт. В нем па­ра­метр '''Whc''' обес­пе­чи­ва­ет три ве­щи. '''W''' ожи­да­ет воз­вра­щения из ''Formail'', '''h''' обо­зна­ча­ет по­иск в за­го­лов­ках, а '''c''' ве­лит ''Procmail'' со­хранить ко­пию со­об­щения.&lt;br /&gt;
&lt;br /&gt;
Да­лее идут три стро­ки усло­вия. Пер­вая га­ран­ти­ру­ет, что в от­вет на пись­ма, при­слан­ные вам, бу­дет вы­сы­лать­ся от­вет­ное пись­мо.&lt;br /&gt;
&lt;br /&gt;
 * .*for &amp;lt;linuxlala@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вто­рая пре­дот­вра­ща­ет от­прав­ку от­ве­та в спи­ски рас­сыл­ки.&lt;br /&gt;
&lt;br /&gt;
 * !^FROM_DAEMON&lt;br /&gt;
&lt;br /&gt;
Тре­тья пре­дот­вра­ща­ет от­прав­ку от­ве­та на пись­ма, от­прав­лен­ные са­мо­му се­бе.&lt;br /&gt;
&lt;br /&gt;
 * !^X-Loop: linuxlala@gmail.com&lt;br /&gt;
&lt;br /&gt;
В сле­дую­щей стро­ке мы ве­лим '''Formail''' со­хра­нить ад­рес от­пра­ви­те­ля в фай­ле '''vacation.cache'''.&lt;br /&gt;
&lt;br /&gt;
Сле­дую­щий ре­цепт на­чи­на­ет­ся с ''':0 ehc. e''' оз­на­ча­ет, что дан­ный ре­цепт вы­полнит­ся толь­ко в том слу­чае, ес­ли пер­вый ре­цепт ска­жет, что в фай­ле '''vacation.cache''' нет ад­ре­са от­пра­ви­те­ля. За­тем мы ве­лим ''Sendmail'' от­пра­вить со­об­щение '''.vacation''' от­пра­ви­те­лю.&lt;br /&gt;
&lt;br /&gt;
Эти два ре­цеп­та га­ран­ти­ру­ют, что от­пра­ви­те­ли не бу­дут по­лу­чать ав­то­от­вет на ка­ж­дое от­прав­лен­ное нам пись­мо: раз их ад­ре­са по­па­ли в кэш, ав­то­от­ве­ты боль­ше не от­прав­ля­ют­ся. За­гляните в ''man procmailex'' и в man-страницу ''Procmail'' для бо­лее под­роб­ной ин­фор­ма­ции об ав­то­от­вет­чи­ках, за­тем от­кинь­тесь на спин­ку крес­ла и рас­слабь­тесь в жиз­ни, сво­бод­ной от спа­ма.&lt;br /&gt;
&lt;br /&gt;
===Ко­гда бло­ки­ро­вать фай­лы===&lt;br /&gt;
&lt;br /&gt;
Бло­ки­ров­ка фай­лов – функ­ция ''Procmail'', по­зво­ляю­щая из­бе­жать пор­чи со­об­ще­ний во вре­мя дос­тав­ки. Пред­ставь­те, что ''Procmail'' од­но­вре­мен­но нуж­но за­пи­сать два со­об­ще­ния в файл. Ко­гда это про­ис­хо­дит, есть риск то­го, что два со­об­ще­ния соз­да­дут пу­та­ни­цу в фор­ма­те '''mailbox'''. Что­бы это­го из­бе­жать, на­чи­най­те ре­цепт с ''':0:'''. За­вер­шаю­щее двое­то­чие га­ран­ти­ру­ет, что толь­ко од­но со­об­ще­ние бу­дет за­пи­сы­вать­ся в файл в один мо­мент вре­ме­ни.&lt;br /&gt;
&lt;br /&gt;
Ес­ли ре­цепт пе­ре­на­прав­ля­ет все най­ден­ные со­об­ще­ния или пе­ре­да­ет их внеш­не­му при­ло­же­нию, бло­ки­ров­ка фай­лов не нуж­на, так как ''Procmail'' не бу­дет пи­сать в них со­об­ще­ния. ''':0:''' ав­то­ма­ти­че­ски бло­ки­ру­ет файл, ко­гда ''Procmail'' оп­ре­де­ля­ет, ку­да пи­шет­ся со­об­ще­ние, и соз­да­ет файл бло­ки­ров­ки. Ес­ли файл бло­ки­ров­ки су­ще­ст­ву­ет, ''Procmail'' по­до­ж­дет не­ко­то­рое вре­мя и сно­ва по­про­бу­ет соз­дать бло­ки­ров­ку.&lt;br /&gt;
&lt;br /&gt;
===Ре­гексп на гар­нир===&lt;br /&gt;
&lt;br /&gt;
Ре­гу­ляр­ные вы­ра­же­ния [regex] – не­отъ­ем­ле­мая часть фай­ла '''~/.procmailrc'''. Ес­ли ис­поль­зо­вать их со зна­ни­ем де­ла, они су­ще­ст­вен­но по­вы­ша­ют эф­фек­тив­ность ре­цеп­тов. Сле­дую­щий ре­цепт ищет в те­ле со­об­ще­ния фра­зу и пе­ре­ме­ща­ет его в за­дан­ную пап­ку.&lt;br /&gt;
&lt;br /&gt;
 :0B:&lt;br /&gt;
 * [0-9]+ Wassup&lt;br /&gt;
 $MAILDIR/silly&lt;br /&gt;
&lt;br /&gt;
Най­дя сло­во ‘'''wassup'''’, пред­ва­рен­ное од­ной или бо­лее циф­ра­ми, в лю­бом мес­те те­ла со­об­ще­ния, ''Procmail'' пе­ре­мес­тит со­об­ще­ние в пап­ку '''silly'''.&lt;br /&gt;
&lt;br /&gt;
===Вы­бор поч­то­во­го ящи­ка===&lt;br /&gt;
&lt;br /&gt;
При вы­бо­ре фор­ма­та поч­то­во­го ящи­ка есть два ва­ри­ан­та: '''mbox''' и '''maildir'''. В при­ме­рах нашего уро­ка мы поль­зу­ем­ся ти­пом '''mbox''', оп­ре­де­лен­ном в '''~/.procmailrc''' как '''MAILDIR=$HOME/Mail''' и '''DEFAULT=$MAILDIR/new'''. Ес­ли бы мы до­ба­ви­ли за­мы­каю­щий слэш в ко­нец пу­ти, как в '''$HOME/Mail/ '''и '''$MAILDIR/new/''', у нас по­лу­чил­ся бы тип '''maildir'''.&lt;br /&gt;
&lt;br /&gt;
В поч­то­вом ящи­ке ти­па '''mbox''' все со­об­ще­ния хра­нят­ся в тек­сто­вом фор­ма­те в од­ном фай­ле; на­ча­ло со­об­ще­ния от­ме­ча­ет­ся стро­кой '''From''', а ко­нец со­об­ще­ния – пус­той стро­кой.&lt;br /&gt;
&lt;br /&gt;
Фор­мат '''maildir''' под­ра­зу­ме­ва­ет хра­не­ние со­об­ще­ний в от­дель­ных фай­лах в ка­та­ло­гах '''cur, new''' и tmp; при не­об­хо­ди­мо­сти они пе­ре­ме­ща­ют­ся из ка­та­ло­га в ка­та­лог.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>