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

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, а сейчас попробую объяснить все на интуитивном уровне, чтобы вы поняли сам принцип работы вышеприведенного сценария.

В первой строке указывается, какой интерпретатор будет выполнять ваши команды — /bin/bash. Обратите внимание на одинарные кавычки, в которые заключена команда date. Это не обыкновенные кавычки, а те, которые расположены под знаком тильды «~». Во второй и третьей строках заносится дата в файл протокола log. Этот файл находится в домашнем каталоге.

Затем последовательно (в цикле for) читается список пользователей из файла users, который находится в домашнем каталоге, и передается имя пользователя программе mail. Программа mail поочередно отправит сообщение каждому пользователю из файла users. Тема сообщения устанавливается с помощью параметра –s, а само сообщение хранится в файле msg. 

Весь поток ошибок перенаправляется в файл log. Вы можете переправить и все сообщения программы mail, удалив дескриптор 2 перед символами перенаправления ввода/вывода.

Теперь создайте файл users. Текст моего личного файла приведен в листинге 13.4.

Листинг 13.4 Файл users

den

u

synthetic

evg

Сообщения, которые вы хотите отправить, запишите в файл msg. Запустите сценарий командой:

./smaller

На экране вы должны увидеть следующую информацию:

Sending message to den

Sending message to u

Sending message to synthetic

Sending message to evg

Так как пользователя evg в моей системе нет, в файл протокола будет записано соответствующее сообщение:

Сбт Май 4 10:43:28 EEST 2002

evg… User unknown /root/dead.letter…

Saved message in /root/dead.letter

На экран не будет выведено сообщение об ошибке, потому что мы перенаправили стандартный поток ошибок в файл log. Как видите, все предельно просто.

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

mail

Если в вашем почтовом ящике нет сообщений, программа сообщит вам об этом:

No mail for user

где user — это ваше имя пользователя.

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

Использовать программу mail в качестве полноценной почтовой программы нельзя — она работает только с вашим локальным ящиком, поэтому если вам нужно будет получить сообщения откуда-то извне, скажем pop.mail.ru, вы не сможете сделать это. Я бы вам порекомендовал использовать программу kmail. которая входит в состав KDE. Данная программа поддерживает несколько учетных записей электронной почты, в том числе и локальный ящик, отправку сообщений с помощью SMTP и локального агента MTA (sendmail), а также сообщения в формате HTML, что является немаловажным, когда пользователи Outlook забывают включить текстовый формат для исходящих сообщений.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Списки рассылки

Из книги Интернет. Новые возможности. Трюки и эффекты [litres] автора Баловсяк Надежда Васильевна

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


Списки рассылки

Из книги Новейший самоучитель работы на компьютере автора Белунцов Валерий

Списки рассылки Говоря о применении электронной почты, необходимо упомянуть еще о таком достаточно популярном средстве общения, как списки рассылки.Приведу один пример. На русскоязычном сайте, посвященном свободному офисному пакету OpenOffice.org, организован список


Создание списка:

Из книги XSLT автора Хольцнер Стивен

Создание списка: <fo:list-block> Для начала воспользуйтесь элементом <fo:list-block>, чтобы создать список XSL-FO; этот объект содержит элементы <fo:list-item>, содержащие данные списка.С элементом <fo:list-block> можно применять следующие свойства:• общие свойства доступа: source-document,


Создание элементов списка:

Из книги Веб-Самоделкин. Как самому создать сайт быстро и профессионально автора Гладкий Алексей Анатольевич

Создание элементов списка: <fo:list-item> Затем при помощи элемента <fo:list-item> нужно поместить в список метку и тело элемента списка. В каждом элементе списка должен присутствовать один из этих объектов.С элементом <fo:list-item> можно применять следующие свойства:• общие


Создание меток элемента списка:

Из книги C++. Сборник рецептов автора Диггинс Кристофер

Создание меток элемента списка: <fo:list-item-label> Метка для элемента списка создается элементом <fo:list-item-label>, при помощи которого можно перенумеровать или пометить дело элемента списка.К элементу <fo:list-item-label> можно применять следующие свойства:• общие свойства


Создание тел элементов списка:

Из книги Самоучитель работы на Macintosh автора Скрылина Софья

Создание тел элементов списка: <fo:list-item-body> Для включения тела элемента списка служит элемент <fo:list-item-body>. Заметьте, что для форматирования тела элемента списка требуемым вам образом вы можете включить в элемент <fo:list-item-body> объект <fo:block>.С элементом


Создание маркированного списка

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

Создание маркированного списка Напомним, что маркированный список задается с помощью тегов <ul>


Создание нумерованного списка

Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.

Создание нумерованного списка Напомним, что нумерованный список задается с помощью тегов


9.3. Создание безопасного при исключениях списка инициализации

Из книги Создание игр для мобильных телефонов автора Моррисон Майкл

9.3. Создание безопасного при исключениях списка инициализации ПроблемаНеобходимо инициализировать ваши данные-члены в списке инициализации конструктора, и поэтому вы не можете воспользоваться подходом, описанным в рецепте 9.2.РешениеИспользуйте специальный формат


4.2.4. Создание групповых списков рассылки

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

4.2.4. Создание групповых списков рассылки Используя групповые списки рассылки, вы сможете одним щелчком мыши отправить сообщения сразу всем адресатам, входящим в одну конкретную группу. Для создания группы необходимо выполнь следующее:1. Щелкнуть по кнопке «+»,


4.3.3. Создание списка задач, принятых к исполнению

Из книги Офисный компьютер для женщин автора Пастернак Евгения

4.3.3. Создание списка задач, принятых к исполнению Каждый календарь может иметь свой набор задач, принятых к исполнению. Перечень задач отображается на панели, которая раскрывается нажатием на кнопку: Чтобы создать задачу, необходимо:1. Выбрать требуемый календарь на


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

Из книги автора

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


Создание односвязного списка

Из книги автора

Создание односвязного списка Это тривиальная задача. В самом простом случае первый узел в связном списке описывает весь список. Первый узел иногда называют головой списка.varMyLinkedList : PSimpleNode;Если MyLinkedList содержит nil, списка еще нет. Таким образом, это начальное значение


Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд

Из книги автора

Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд #!/bin/bash# уЩЫЬ for гЯ [гаЩгЫЯЭ], гЯкФСЮЮйЭ г аЯЭЯниР аЯФгдСЮЯзЫЩ ЫЯЭСЮФ.NUMBERS="9 7 3 8 37.53"for number in `echo $NUMBERS` # for number in 9 7 3 8 37.53do echo -n "$number "doneecho exit 0Более сложный пример использования подстановки


Рассылки

Из книги автора

Рассылки Эта вкладка в меню создана для облегчения электронной и обычной