<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=Postfix</id>
	<title>Postfix - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=Postfix"/>
	<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=Postfix&amp;action=history"/>
	<updated>2026-10-12T23:41:40Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=Postfix&amp;diff=173&amp;oldid=prev</id>
		<title>Admin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=Postfix&amp;diff=173&amp;oldid=prev"/>
		<updated>2023-02-27T18:39:16Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 21:39, 27 февраля 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=Postfix&amp;diff=172&amp;oldid=prev</id>
		<title>lor&gt;Cetjs2: Откат правок Abc123456 (обсуждение) к версии Mandala</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=Postfix&amp;diff=172&amp;oldid=prev"/>
		<updated>2018-05-04T11:17:59Z</updated>

		<summary type="html">&lt;p&gt;Откат правок &lt;a href=&quot;/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Abc123456&quot; title=&quot;Служебная:Вклад/Abc123456&quot;&gt;Abc123456&lt;/a&gt; (&lt;a href=&quot;/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Abc123456&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Обсуждение участника:Abc123456 (страница не существует)&quot;&gt;обсуждение&lt;/a&gt;) к версии &lt;a href=&quot;/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Mandala&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Участник:Mandala (страница не существует)&quot;&gt;Mandala&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Postfix - агент передачи почты (MTA — mail transfer agent).&lt;br /&gt;
== Архитектура ==&lt;br /&gt;
== Базовые настройки ==&lt;br /&gt;
== Настройки внешних фильтров для Postfix ==&lt;br /&gt;
Сам Postfix занимается лишь одной задачей - передачей почты. Установка всевозможных фильтров в систему реализуется через управление потоками данных между компонентами (демонами), входящих в Postfix, и внешними приложениями.&lt;br /&gt;
&lt;br /&gt;
===== Пример простого фильтра содержимого почты (ClamAV &amp;amp; SpamAssassin), основанного на pipe. =====&lt;br /&gt;
http://www.postfix.org/FILTER_README.html#simple_filter)&lt;br /&gt;
&lt;br /&gt;
Сценарий обработки почты таков:&lt;br /&gt;
smtpd, слушающий tcp/25, принимает почту из сети. smtpd запущен с выставленным параметров content_filter. После проверки содержимого на корректность демоном cleanup оно передаётся фильтру, выполненному в виде процесса pipe, вызывающего внешнюю программу. После соответствующей обработки программа должна с помощью sendmail отправить письмо в очередь сообщений.&lt;br /&gt;
&lt;br /&gt;
В файле master.cf сделайте правку записи сервера smtpd (это можно сделать и в main.cf):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smtp      inet  n       -       -       -       -       smtpd&lt;br /&gt;
   -o content_filter=mailfilter:dummy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... и определите программу-фильтр:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mailfilter  unix    -   n   n   -   -   pipe&lt;br /&gt;
    flags=R user=filter argv=/usr/local/bin/mailfilter -f ${sender} -- ${recipient}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Не забудьте создать пользователя, указанного в параметре user.&lt;br /&gt;
&lt;br /&gt;
Теперь нам осталось побеспокоиться о конечной программе (подразумевается, что ClamAV &amp;amp; Spamassassin уже установлены и настроены). У меня сей скрипт появился откуда-то из недр Интернета и был немного мной подредактирован. Мой дистрибутив - Debian lenny.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
MYDOMAIN=example.org&lt;br /&gt;
INSPECT_DIR=/tmp&lt;br /&gt;
#Не забываем создать директорию карантина&lt;br /&gt;
QUARANTINE_DIR=/var/lib/mailfilter/quarantine&lt;br /&gt;
&lt;br /&gt;
SENDMAIL=&amp;quot;/usr/sbin/sendmail -i&amp;quot;&lt;br /&gt;
SPAMC=&amp;quot;/usr/bin/spamc&amp;quot;&lt;br /&gt;
FILTER_SPAMC=&amp;quot;$SPAMC -u postfix -U /var/run/spamd.sock&amp;quot;&lt;br /&gt;
CLAMSCAN=&amp;quot;/usr/bin/clamscan&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ORIG_MESS=&amp;quot;$INSPECT_DIR/orig.$$&amp;quot;&lt;br /&gt;
AV_OUT=&amp;quot;$INSPECT_DIR/av_out.$$&amp;quot;&lt;br /&gt;
SA_OUT=&amp;quot;$INSPECT_DIR/sa_out.$$&amp;quot;&lt;br /&gt;
TOADMIN_MESS=&amp;quot;$INSPECT_DIR/to_admin.$$&amp;quot;&lt;br /&gt;
&lt;br /&gt;
VIRUSADMIN=&amp;quot;postmaster@$MYDOMAIN&amp;quot;&lt;br /&gt;
&lt;br /&gt;
EX_TEMPFAIL=75&lt;br /&gt;
EX_UNAVAILABLE=69&lt;br /&gt;
&lt;br /&gt;
trap &amp;quot;rm -f $ORIG_MESS $TOADMIN_MESS $SA_OUT $AV_OUT&amp;quot; 0 1 2 3 15&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; $ORIG_MESS || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }&lt;br /&gt;
$CLAMSCAN --no-summary --stdout $ORIG_MESS &amp;gt; $AV_OUT&lt;br /&gt;
AV_RESULT=$?&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$AV_RESULT&amp;quot; in&lt;br /&gt;
0)&lt;br /&gt;
  $FILTER_SPAMC &amp;lt; $ORIG_MESS &amp;gt; $SA_OUT || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }&lt;br /&gt;
  $SENDMAIL &amp;quot;$@&amp;quot; &amp;lt; $SA_OUT&lt;br /&gt;
  exit 0&lt;br /&gt;
  ;;&lt;br /&gt;
1)&lt;br /&gt;
  QUARANTINE_FILENAME=`date +%Y%m%d`_$$&lt;br /&gt;
  cp $ORIG_MESS $QUARANTINE_DIR/virus/$QUARANTINE_FILENAME&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Subject: VIRUS FOUND&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  echo &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  echo &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  grep Received $ORIG_MESS &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  echo &amp;quot;From: $2 (unverified)&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  echo &amp;quot;To: $4&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  grep Subject $ORIG_MESS &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  echo &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  cat $AV_OUT | awk '{print $2 &amp;quot; &amp;quot; $3}' &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  echo &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  echo &amp;quot;Saved as $QUARANTINE_DIR/virus/$QUARANTINE_FILENAME&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
    echo &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
 &lt;br /&gt;
  $SENDMAIL -f $VIRUSADMIN -r $VIRUSADMIN -F &amp;quot;Antivirus&amp;quot; $VIRUSADMIN &amp;lt; $TOADMIN_MESS&lt;br /&gt;
&lt;br /&gt;
  exit 0&lt;br /&gt;
  ;;&lt;br /&gt;
*)&lt;br /&gt;
  echo &amp;quot;Subject: ANTIVIRUS FAILED&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  echo &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  echo &amp;quot;Antivirus Failed with next problem:&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  echo &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  case &amp;quot;$AV_RESULT&amp;quot; in&lt;br /&gt;
40)&lt;br /&gt;
       echo &amp;quot;Unknown option passed.&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    50)&lt;br /&gt;
       echo &amp;quot;Database initialization error.&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    52)&lt;br /&gt;
       echo &amp;quot;Not supported file type.&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    53)&lt;br /&gt;
       echo &amp;quot;Can't open directory.&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    54)&lt;br /&gt;
       echo &amp;quot;Can't open file. (ofm)&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    55)&lt;br /&gt;
       echo &amp;quot;Error reading file. (ofm)&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    56)&lt;br /&gt;
       echo &amp;quot;Can't stat input file / directory.&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    57) &lt;br /&gt;
       echo &amp;quot;Can't get absolute path name of current&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       echo &amp;quot;working directory.&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    58)&lt;br /&gt;
       echo &amp;quot;I/O error, please check your filesystem.&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    59) &lt;br /&gt;
       echo &amp;quot;Can't get information about current user&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       echo &amp;quot;from /etc/passwd.&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    60) &lt;br /&gt;
       echo &amp;quot;Can't  get  information  about  user&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       echo &amp;quot;clamav (default name) from /etc/passwd.&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    61) &lt;br /&gt;
       echo &amp;quot;Can't fork.&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    63) &lt;br /&gt;
       echo &amp;quot;Can't create temporary files/directories&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       echo &amp;quot;(check permissions).&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    64) &lt;br /&gt;
       echo &amp;quot;Can't write to temporary directory (please&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       echo &amp;quot;specify another one).&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    70) &lt;br /&gt;
       echo &amp;quot;Can't allocate and clear memory (calloc).&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    71) &lt;br /&gt;
       echo &amp;quot;Can't allocate memory (malloc).&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
    *)&lt;br /&gt;
       echo &amp;quot;Unknown error $AV_RESULT&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
       ;;&lt;br /&gt;
  esac&lt;br /&gt;
       echo &amp;quot;************************************************&amp;quot; &amp;gt;&amp;gt; $TOADMIN_MESS&lt;br /&gt;
  $SENDMAIL -f $VIRADMIN -r $VIRADMIN -F &amp;quot;Antivirus&amp;quot; &amp;quot;$VIRADMIN&amp;quot; &amp;lt; $TOADMIN_MESS&lt;br /&gt;
  exit $EX_TEMPFAIL&lt;br /&gt;
  ;;&lt;br /&gt;
esac&lt;br /&gt;
 &lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данный вариант фильтра подходит для не очень загруженных почтовых серверов (таких - большинство).&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
[http://www.postfix.org/documentation.html]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.books.ru/shop/books/561452]&lt;br /&gt;
&lt;br /&gt;
[[Category:Администрирование]]&lt;/div&gt;</summary>
		<author><name>lor&gt;Cetjs2</name></author>
	</entry>
</feed>