Чтение онлайн

на главную - закладки

Жанры

Linux: Полное руководство

Аллен Питер В.

Шрифт:

♦ [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

PATH=$HOME/bin:/usr/bin:/usr/sbin:/bin:/usr/local/bin:.

MAILDIR=/home/den/mail

DEFAULT=$MAILDIR/mbox

LOGFILE=$MAILDIR/from

LOCKFILE=$HOME/.lockmail

:0

* ^Subject.*Privet

privets

:0

* ^Subject.*Job

| (formail -r ; cat /home/den/vakancy.txt) | /usr/sbin/sendmail -t

Если в теме сообщения было найдено слово «Privet», то все сообщения будут сохраняться в файле

/home/den/mail/privets
. Если тема сообщения содержит слово «Job», то по адресу отправителя будет автоматически отправлен файл
vakancy.txt
. Файл
vakancy.txt
должен быть текстовым — это не вложение.

Файл протокола, в который программа procmail запишет адрес отправителя, тему и размер сообщения, называется from.

14.5. Создание списка рассылки

Обычно системы рассылки создаются специально предназначенными для этого средствами: например, идеально подходят PHP в связке с MySQL.

Язык программирования PHP предназначен для создания веб-приложений и оснащен всеми необходимыми для этого функциями, а сервер баз данных MySQL обеспечит поддержку базы данных адресов подписчиков и параметры рассылки. Таким образом, если вы хотите создать собственный MailList.Ru, воспользуйтесь готовыми решениями или напишите собственное на PHP или Perl.

Однако иногда бывает полезно создать небольшую рассылку внутри одной организации. Приведенное далее решение не отличается оригинальностью и не претендует на звание лучшей системы рассылки. Это просто пример, из которого вы узнаете также, как использовать стандартную почтовую утилиту Linux — mail. Этот пользовательский агент входит в состав практически каждой UNIX-системы.

Допустим, у вас есть три отдела: отдел маркетинга, производственный отдел и администрация. К первому отделу относятся пользователи вашей системы

marina
и
oleg
,
ко второму —
igor
,
dmitry
,
olya
, а к третьему —
president
,
director
,
secretar
. Периодически вам нужно отправлять сообщения в один из отделов. Число пользователей небольшое и, возможно, отправить сообщение можно было бы с помощью групп пользователей почтовой программы, которую вы используете. Однако сейчас я покажу, как элегантно это можно сделать средствами Linux.

Создайте файл

.mailrc
в вашем домашнем каталоге и добавьте в него строки псевдонимов (убедившись, что в вашей системе нет пользователей с именами
market
,
proizv
и
office
):

alias market marina oleg

alias proizv igor dmitry olya

alias office director secretar

В дальнейшем, чтобы отправить сообщение в производственный отдел, просто введите команду:

$ mail proizv

Программа mail попросит вас ввести тему, а затем текст сообщения. Для окончания ввода нажмите Ctrl+D, и mail отправит сообщения пользователям.

Если пользователей много, использовать механизм псевдонимов не очень удобно. Гораздо удобнее, чтобы программа mail брала список подписчиков из какого-нибудь файла. К сожалению, разработчики не предусмотрели такой возможности, однако с помощью небольшого сценария мы можем эту возможность организовать.

Создайте сценарий

smaller
в своем домашнем каталоге (листинг 14.4).

Листинг 14.4. Сценарий smailer

#!/bin/bash

DT=`date`

echo $DT >> log

for user in `cat users`

do

 echo "Sending message to $user"

 mail $user -s Subscribe < msg 2>> log

done

Сообщение, которое вы хотите отправить, запишите в файл

msg
, а список подписчиков по одному в строке — в файл
users
.

Программу mail можно использовать и для чтения почты. Для этого просто введите команду

mail
. Если в пашем почтовом ящике есть новые сообщения, программа выведет на экран нумерованный список, и вы сможете ввести номер сообщения, которое хотите прочитать. Для удаления сообщения используется команда d <номер> или d <диапазон>. Выйти из программы можно, введя команду q.

Программа mail — это исключительно пользовательский агент: она работает только с вашим локальным ящиком, В другие почтовые клиенты обычно встроен и агент доступа, забирающий сообщения с внешнего сервера, например, pop.mail.ru. Я советую использовать в качестве почтового клиента программу kmail, входящую в состав KDE.

Поделиться:
Популярные книги

Черный маг императора 3

Герда Александр
3. Черный маг императора
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора 3

Излом

Осадчук Алексей Витальевич
10. Последняя жизнь
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Излом

Вперед в прошлое 3

Ратманов Денис
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 3

Запечатанный во тьме. Том 2

NikL
2. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 2

Легат

Прокофьев Роман Юрьевич
6. Стеллар
Фантастика:
боевая фантастика
рпг
6.73
рейтинг книги
Легат

Третий Генерал: Том VI

Зот Бакалавр
5. Третий Генерал
Фантастика:
городское фэнтези
аниме
сказочная фантастика
попаданцы
гаремник
5.00
рейтинг книги
Третий Генерал: Том VI

Шайтан Иван 2

Тен Эдуард
2. Шайтан Иван
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Шайтан Иван 2

Я уже граф. Книга VII

Дрейк Сириус
7. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я уже граф. Книга VII

Камень Книга одиннадцатая

Минин Станислав
11. Камень
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Камень Книга одиннадцатая

Правильный лекарь. Том 6

Измайлов Сергей
6. Неправильный лекарь
Фантастика:
городское фэнтези
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Правильный лекарь. Том 6

Меченный смертью. Том 5

Юрич Валерий
5. Меченный смертью
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Меченный смертью. Том 5

Наследник, скрывающий свой Род

Тарс Элиан
2. Десять Принцев Российской Империи
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Наследник, скрывающий свой Род

Кодекс Охотника. Книга XXVII

Винокуров Юрий
27. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга XXVII

Вдова на выданье

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Вдова на выданье