появилось интересное задание - написать скрипт который рассылал бы сообщение на определённые адреса в и-нете, сообщения электронной почты, который в качестве отправителя вставляет определённый адрес электронной почты, мне думается, что подобный скрипт был бы полезен для рассылки сообщений внутри нашей компании, счас вот думаю во-первых как его реализовать, proof of concept готов, осталось самое малое - научиться распознавать контент вложения для правильного выставления тэга описыващего тип контента, ну и пририсовать веб-морду и написать всё это на более-менее консервативном API, чтобы не использовать сотню экзотических перловых модулей, а только SMTP
по ходу процесса буду писать тут обновления и наверно в конце-концов выложу сам скрипт, говорю сразу mod-perl апача я не использую, он несколько экзотичен, сравнительно капризен и неуниверсален в плане того что встроенный перл в nginx несколько отличается (примерно как bash 2.05 и 3.2)
3 августа 2008, дополнение.
По обоюдному согласию (с главным специалистом) было решено начать с движка, рассылающего почту, а интерфейс доделать потом.
Итак на данный момнет есть движок, могущий рассылать письма однопоточно, он цепляется к одному почтовому серверу. Есть идея вынести движок в функцию и реализовать многопоточность с возможностью отсылки с разных серверов одновременно, то есть наш главный специалист предложил фундаментальный подход, но исключительно из соображений скорости рассылки, а то 1000 писем рассылать по нашему предприятию может быть будет не очень быстро, если реализовать это в 1 поток.
Таким образом пока что на повестке дня реализация системы рассылки не только в виде отдельной функции но и реализация механизма распаралеливания задачи и контроля потоков.
для веб-морды решено использовать tinymce в качестве html-editor'а и ещё надо будет нарисовать движок для ldap(выковыривание персон из списков рассылки) и разборщик текстовых файлов(для разборки списков email'ов) а также логгер, для составления отчётов о проделанной рассылке
Этой системке грозит попасть в план работ на конец сентября...
6 августа 2008, дополнение.
Сегодня провёл испытание движка - даже однопоточный механизм позволяет загрузить сервер на процессоре xeon с 4 ядрами и частотой 3.6ГГц и 3 гигами оперативки на 80-90% по всем ядрам, при этом создаётся поток примерно 1.5 мегабайта в секунду (30-35 сообщений в секунду по 47 килобайт каждое)
а софт на сервере такой - венда2003-р2, эксчейндж-2003сп2, симантик антивирус, так что есть чему тормозить
есть нюанс - за смтп-сессию можно было отослать только 20 сообщений, поэтому дабы не злоупотреблять, я организовал реконнект каждые 10 сообщений
15 августа 2008
вчера весь день промучался - оказывается Net::SMTP не хотят говорить по-русски с ActiveState Perl у меня ничего не вышло - письма доходят но само сообщение нечитаемо потому что я не в силах разобрать кароказябли (пробовал разные кодировки koi8-r Windows-1251 utf-8 кароказябли но разные) на Debian Linux Etch получилось отослать сообщение только в кодировке utf-8, с koi8-r не срослось, причём это не зависило ни от системной локали ни от локали самого скрипта(сообщение бралось из отдельного html-файла)
обновлено 23 ноября 2008:
По поводу кодировок поизучав различные rfc cтало ясно, что текст надо кодировать либо в base64 либо в quoted printable. Вобщем классика жанра - RTFM.
По поводу проекта - он по просту застрял, скажем так - не до него пока что.