:0
* ^Subject.*Privet
privets
:0
* ^Subject.*Job
| (formail -r ; cat /home/den/vakancy.txt) | /usr/sbin/sendmail -t
Если в теме сообщения было найдено слово «Privet», то все сообщения будут сохраняться в файле /home/den/mail/privets
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. Сценарий 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.Эта программа поддерживает несколько учетных записей электронной почты, в том числе и локальный ящик, отправку сообщений с помощью SMTP и локального транспортного агента, а также сообщения в формате HTML.
14.6. Защита программы sendmail. Программа smrsh
Однажды неизвестный хакер может заставить ваш sendmail
выполнить какую-нибудь программу. Какая это будет программа — зависит от его фантазии: безобидная команда echo или «rm -rf /». О том, как это сделать, я писать не буду — лучше разберемся, как этого не допустить.