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

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

Жанры

Linux-сервер своими руками

Колисниченко Денис Николаевич

Шрифт:

:0

* ^From:.* Subscribe.Ru

! adm

Но в этом случае, если кто-нибудь из пользователей вашей системы также подпишется на другую рассылку на сервере Subscribe.Ru, то вся почта попадет к пользователю adm и вам придется читать рассылку вместе.

Примечание. Подробнее о правилах сортировки вы прочитаете в справочной системе Linux, введя команду man procmail.

В этом же каталоге ($HOME/mail) создайте файл .forward. Если вы работаете как пользователь root, установите права доступа к этому файлу так же как и для файла .procmailrc.

В этом файле задаются правила перенаправления почты. Добавьте в него следующую строку: 

|IFS=' ' && exec /usr/bin/procmail USER=<mail>

Обычно программа procmail находится в каталоге /usr/bin. Если вы при самостоятельной сборке программы указали другой каталог, измените команду перенаправления в файле .forward.

Теперь создайте файл .fetchmailrc. Этот файл нужно создать в каталоге того пользователя, от имени которого будет запускаться fetchmail. В этот файл добавьте следующие строки:

set postmaster "mail"

poll provider.ru proto POP3 no dns

user "mail" pass "my_password" to mail here

options fetchall

Таким образом вы установите постмастера (пользователь mail. provider.ru) — имя почтового сервера, откуда вы будете забирать почту по протоколу POP3. При этом вы будете использовать имя пользователя mail и пароль my_password. Опция fetchall указывает программе получить всю почту и потом удалить полученные сообщения на сервера provider.ru.

Запускать программу fetchmail можно как демон, а можно с помощью планировщика crontab. В первом случае просто выполните команду:

fetchmail –d 12000

При этом fetchmail будет проверять наличие новой почты через каждые 20 минут. Во втором случае выполните команду crontab –e и введите новое задание:

0,20,40 * .* * * /usr/bin/fetchmail

Теперь перейдем к решению второй задачи. Напомню, что наша цель — создание автоответчика. Существуют два типа автоответчиков. Первые посылают автоответ только на определенные сообщения, а вторые — на все. Например, вам нужно отправить клиенту прайс-лист вашей организации по его требованию. Это первый тип автоответчика. Если же вы уезжаете летом на недельку отдохнуть куда-нибудь и хотите, чтобы программа сообщила людям, что вы в отпуске — это второй тип.

Займемся настройкой первого типа. Для этого в ваш файл .procmailrc добавьте строки:

0:

* ^Subject.*Price

| (formail –r ; cat $HOME/pricelist.zip)

| sendmail –t

Как видите все намного проще, чем ожидалось. А второй тип автоответчика создается еще проще:

0:

| (formail –r; cat $HOME/infо.txt)

| sendmail –t

Заметьте — вы не определяете никаких условий, поэтому ответное письмо будет отправлено всем, кто напишет вам сообщение. В файл info.txt нужно записать ваш автоответ.

Сделаем небольшой вывод. Программа fetchmail используется для загрузки сообщений, a procmail — для ее сортировки. Рекомендую вам изучить параметры программ fetchmail и procmail — вы найдете их в документации по этим программам. Используйте procmail с большой осторожностью, потому что если вы неправильно укажете условия сортировки, почта будет просто утеряна без возможности восстановления.

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

Средствами Linux

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

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

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

Создайте файл .mailrc в вашем домашнем каталоге и добавьте в него строки:

alias market marina oleg

alias proizv igor dmitry olya

alias adm director secretar

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

mail proizv

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

При создании псевдонимов убедитесь, что в вашей системе нет пользователей с таким именем.

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

Создайте сценарий smaller в своем домашнем каталоге (см. листинг 13.3).

Листинг 13.3. Сценарий 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

Напомню, что сценарий — это обыкновенный текстовый файл с установленным атрибутом выполнения, содержащий команды интерпретатора. Более подробно сценарии рассматриваются в гл. 19, а сейчас попробую объяснить все на интуитивном уровне, чтобы вы поняли сам принцип работы вышеприведенного сценария.

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

Дневники. 1913–1919узея

Богословский Михаил Михайлович
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Дневники. 1913–1919узея

Дважды одаренный. Том VII

Тарс Элиан
7. Дважды одаренный
Фантастика:
аниме
фэнтези
попаданцы
5.50
рейтинг книги
Дважды одаренный. Том VII

Сила монстров

Чейз Ева
2. Тенекровные
Фантастика:
городское фэнтези
зарубежная фантастика
ужасы и мистика
5.00
рейтинг книги
Сила монстров

Гримуар темного лорда VI

Грехов Тимофей
6. Гримуар темного лорда
Фантастика:
попаданцы
аниме
фэнтези
5.25
рейтинг книги
Гримуар темного лорда VI

Последний реанорец. Том IV

Павлов Вел
3. Высшая Речь
Фантастика:
фэнтези
5.20
рейтинг книги
Последний реанорец. Том IV

Монахиня Адель из Ада

Фрэй Анита
Любовные романы:
исторические любовные романы
5.00
рейтинг книги
Монахиня Адель из Ада

Маленькая женщина Большого

Зайцева Мария
5. Наша
Любовные романы:
эро литература
современные любовные романы
5.40
рейтинг книги
Маленькая женщина Большого

Новый век начался с понедельника

Омельянюк Александр Сергеевич
Детектив-экшин
Детективы:
исторические детективы
политические детективы
5.00
рейтинг книги
Новый век начался с понедельника

Неучтенный элемент. Том 12

NikL
12. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 12

Я не бог. Книга XXXIV

Дрейк Сириус
34. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я не бог. Книга XXXIV

Чародей из заброшенной школы 2: Слуги Тьмы, на выход!

Кондратьева Екатерина Владимировна
Фантастика:
фэнтези
7.00
рейтинг книги
Чародей из заброшенной школы 2: Слуги Тьмы, на выход!

Книга шифров. Тайная история шифров и их расшифровки

Сингх Саймон
Научно-образовательная:
культурология
6.25
рейтинг книги
Книга шифров. Тайная история шифров и их расшифровки

Избранные произведения в 2-х томах. Том 1

Собко Вадим Николаевич
Проза:
роман
советская классическая проза
5.00
рейтинг книги
Избранные произведения в 2-х томах. Том 1

Легенды Ануэ: Охота на дракона

Ветров Макс
Фантастика:
боевая фантастика
попаданцы
5.50
рейтинг книги
Легенды Ануэ: Охота на дракона