Linux: Полное руководство
Шрифт:
Строки файла конфигурации
Строки, начинающиеся с последовательности символов :0 или :0:, определяют правила, на основании которых procmail выполнит действие над сообщением. После символов :0 можно указать опции поиска и исполняемый файл, которому будет передано сообщение. Общий синтаксис такой:
Опция H (header) означает, что условие будет применяться к заголовку письма, а опция В — к телу. Опция D указывает программе различать нижний и верхний регистры символов. По умолчанию используется опция H,
Условие задается с помощью регулярных выражений. Каждое условие начинается символом * и записывается в отдельной строке. Регулярные выражения задаются как обычно, а именно:
♦ Символ ^ указывает на начало строки, а $ — на ее конец.
♦ Символ . обозначает любой символ, кроме CR (возврат каретки).
♦ Символы ? и * читаются как «ноль или более раз».
♦ Символ + — «один или более раз».
♦ Символ | обозначает логическую операцию ИЛИ : x|у — x ИЛИ у.
♦ [a-z] определяет любой символ из диапазона a..z.
♦ [^a-z] задает любой символ вне диапазона a..z.
После условия указывается одна команда. Если первый символ команды «!», то сообщение будет перенаправлено на все указанные почтовые адреса, а если «|», то сообщение будет передано исполняемому файлу (программе), который указан после символа Вместо исполняемого файла можно указать переменную окружения, в которую будет записан результат.
Переменная окружения MAILDIR устанавливается в файле .procmailrc. Обычно она имеет значение $HOME/Mail.
Кроме переменной окружения MAILDIR, вы можете указать переменные окружения SENDMAIL и FORMAIL, которые содержат полный путь к программам sendmail и formail (фильтр-преобразователь сообщений в формат mailbox). Переменная окружения LOGFILE содержит имя файла протокола программы procmail, а переменная DEFAULT — имя файла, в который будут записываться сообщения, к которому procmail не может применить ни одно из правил.
Для иллюстрации я приведу свой файл конфигурации procmail.
Листинг 14.3. Мой файл .procmailrc
Если в теме сообщения было найдено слово «Privet», то все сообщения будут сохраняться в файле
Файл протокола, в который программа procmail запишет адрес отправителя, тему и размер сообщения, называется from.
14.5. Создание списка рассылки
Обычно
системы рассылки создаются специально предназначенными для этого средствами: например, идеально подходят PHP в связке с MySQL.Язык программирования PHP предназначен для создания веб-приложений и оснащен всеми необходимыми для этого функциями, а сервер баз данных MySQL обеспечит поддержку базы данных адресов подписчиков и параметры рассылки. Таким образом, если вы хотите создать собственный MailList.Ru, воспользуйтесь готовыми решениями или напишите собственное на PHP или Perl.
Однако иногда бывает полезно создать небольшую рассылку внутри одной организации. Приведенное далее решение не отличается оригинальностью и не претендует на звание лучшей системы рассылки. Это просто пример, из которого вы узнаете также, как использовать стандартную почтовую утилиту Linux — mail. Этот пользовательский агент входит в состав практически каждой UNIX-системы.
Допустим, у вас есть три отдела: отдел маркетинга, производственный отдел и администрация. К первому отделу относятся пользователи вашей системы
Создайте файл
В дальнейшем, чтобы отправить сообщение в производственный отдел, просто введите команду:
Программа mail попросит вас ввести тему, а затем текст сообщения. Для окончания ввода нажмите Ctrl+D, и mail отправит сообщения пользователям.
Если пользователей много, использовать механизм псевдонимов не очень удобно. Гораздо удобнее, чтобы программа mail брала список подписчиков из какого-нибудь файла. К сожалению, разработчики не предусмотрели такой возможности, однако с помощью небольшого сценария мы можем эту возможность организовать.
Создайте сценарий
Листинг 14.4. Сценарий smailer
Сообщение, которое вы хотите отправить, запишите в файл