понедельник, 17 января 2011 г.

Автоматическая отправка почты на комьютере без постоянного подключения к интернет (masqmail, procmail)

Данный метод отправки почты лучше всего подойдет для компьютеров, работа за которыми производится под несколькими учетными записями, и которые не имеют постоянного подключения к сети интернет, а подключаются к различным провайдерам лишь периодически (например через ppp). В таком случае, после отправки сообщения пользователем, если подключение к интернет активно, оно будет отправлено незамедлительно, в противном случае оно попадет в очередь сообщений, а затем, при активации подключения, будет передано почтовому серверу провайдера (настройки подключения к серверу указываются отдельно для каждого провайдера).
За прием и обработку очереди сообщений отвечает почтовый сервер masqmail, который был создан именно для таких случаев. В debian начальная настройка производится при установке этого пакета (в дальнейшем его можно повторно перенастроить выполнив команду dpkg-reconfigure masqmail). Часть опций, отвечающих за интеграцию в систему debian записывается в файл /etc/default/masqmail:

$ cat /etc/default/masqmail
#
# better use 'dpkg-reconfigure masqmail'
# instead of editing by hand
#
INIT_SMTP_DAEMON="false"
INIT_QUEUE_DAEMON="false"
INIT_FETCH_DAEMON="false"
#
QUEUE_DAEMON_IVAL="-q10m"
FETCH_DAEMON_IVAL="-go5m"
#
IPUP_RUNQUEUE="true"
IPUP_FETCH="false"
IFUP_IFACES="all"


В моем случае при старте системы smtp-демон не запускается (стартует из inetd при запросе), получение почты с других серверов также отключено (для этих целей используется fetchmail). Обработка очереди производится при поднятии любого интерфейса (отрабатывают скрипты, установленные в /etc/network/if-up.d/ и /etc/ppp/ip-up.d/).
Главный конфиг masqmail выглядит так:

$ cat /etc/masqmail/masqmail.conf
### BEGIN DEBCONF SECTION
# Do not edit within this region if you want your changes to be preserved by
# debconf. Instead, make changes after the "### END DEBCONF SECTION" line.
host_name="kirill-u100"
local_hosts="localhost;kirill-u100;localhost.localdomain"
local_nets=""
listen_addresses="localhost:25"
spool_dir="/var/spool/masqmail"
mail_dir="/var/mail"
log_dir="/var/log/masqmail"
do_queue=false
use_syslog=false
online_detect=file
online_file="/var/run/masqmail-route"
mbox_default=mda
mda="/usr/bin/procmail -Y -d ${rcpt_local}"
alias_file=/etc/aliases
alias_local_caseless="false"
### END DEBCONF SECTION
#
# include the locations of your route and get configurations here.
# Examples:
# online_routes.default = "/etc/masqmail/default.route"
# online_gets.default = "/etc/masqmail/default.get"
# You can have more of those, with '.default' replaced with other
# names. See man 8 masqmail.conf.
#

online_routes.kyivstar-xl = "/etc/masqmail/route.kyivstar-xl"
online_routes.utel-unlim = "/etc/masqmail/route.utel-unlim"


Файлы настроек для передачи почты разным провайдерам перечислены в конце файла (строки вида online_routes.<provider_name> = <config_file>). Где <provider_name> устанавливается опцией ipparam при запуске ppp (в соответствующем файле из /etc/ppp/peers/).

Простейший пример одного из таких файлов:

$ sudo cat /etc/masqmail/route.kyivstar-xl
mail_host="relay.kyivstar.net"


Запуск masqmail из inetd производится следующим образом:

$ cat /etc/inetd.conf | grep masqmail
127.0.0.1:25 stream tcp nowait mail /usr/sbin/masqmail masqmail -bd -q -bs

см. также:

Комментариев нет: