[Sysadmins] fetchmail+multidrop или см. аттачи

Michael Shigorin =?iso-8859-1?q?mike_=CE=C1_osdn=2Eorg=2Eua?=
Чт Ноя 30 20:50:21 MSK 2006


On Thu, Nov 30, 2006 at 07:19:45PM +0200, Alexander Yereschenko wrote:
> Попробовал вытягивать fethmail и скармливать постфиксу... Но
> что-то он все скидывает пользователю, от которого запускался
> fetchmail (напр. admin).

Лучше для такого применять совсем непривилегированного
пользователя, у которого шелл -- максимум /bin/rbash.

> ( В письмах присутствуют поля To: user1 на mydomen.gov.ua )
> Содержимое .fetchmailrc :
> poll domen.gov.ua protocol pop3 username "org" password "pass"
> Пробовал вариант:
> poll domen.gov.ua protocol pop3 username "org" password "pass" to *  here
> Не помогло - скидывается локальному юзеру org
> Чтение man fetchmail и пробование вариантов должного результата не дает... 
> Видимо не там или не так читаю... :)

Насколько помню, Вам от fetchmail нужен multidrop, хотя последний
раз, как с таким сталкивался -- был нарисован позорный
.procmailrc на десяток пользователей, которые были (точнее,
два скрипта для заведения и удаления почтовых пользователей,
которые делали нужные изменения и в нём).

Ух ты, даже нашлись в загашнике :)

> Как все-таки это сделать правильно? Как раскидать по локальным
> ящикам в зависимости от содержимого поля "To: " 
> Кстати, при этом игнорировать в этом поле адреса не из своего
> домена, дабы не плодить дупы.

А они тоже валятся?  Тогда модифицируйте болвань .procmailrc
из этих скриптов или /etc/procmailrc (или конфигурацию postfix
в р-не access или header_checks), чтобы их дискардить.

> ЗЫ. Конечно, правильнее всего - это vpn внутри всей организации
> и нормальное хождение почты между почтовыми серверами... Но
> пока увы по различным причинам нереализуемо. 

Бывает.  Если что -- пишите, звоните (234-7560), поможем.

-- 
 ---- WBR, Michael Shigorin <mike на altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/
----------- следующая часть -----------
#!/bin/bash

USER="$1"
DOMAIN=XXXXXXX.kiev.ua
GROUP=popusers
DIR=/dev/null
SHELL=/dev/null

PREFIX=/usr/local
POP3LIST=$PREFIX/lib/users.pop3

POP3USER=pop3
POP3DIR=/home/$POP3USER
PROCMAILRC=$POP3DIR/.procmailrc

[ $# = 0 ] && {
	echo "Usage: $0 pop3-login-name" >&2
	exit 1
}

[ ! -d $POP3DIR ] && {
	echo -n "Creating '$POP3USER' account... "
	useradd -m -k /dev/null -s /dev/null $POP3USER && echo "done."
	touch $POP3DIR/.fetchmailrc
}

grep -q "^$USER$" $POP3LIST && {
	echo "User '$USER' already exists in $POP3LIST." >&2
	exit 2
}

grep -q "^$GROUP" /etc/group || addgroup -g $GROUP

. $PREFIX/lib/procmailrc.sh

echo "$USER" >> $POP3LIST
useradd -d $DIR -M -s $SHELL -g GROUP $USER

rebuild_promailrc ()

----------- следующая часть -----------
#!/bin/bash2

USER="$1"

PREFIX=/usr/local
POP3LIST=$PREFIX/lib/users.pop3
TMP=`mktemp $PREFIX/tmpXXXXXX.pop3`

POP3USER=pop3
POP3DIR=/home/$POP3USER
PROCMAILRC=$POP3DIR/.procmailrc

[ $# = 0 ] && exit 1

. $PREFIX/lib/procmailrc.sh

userdel $USER && grep -v "^$USER$" $POP3LIST > $TMP || exit 2

cat $TMP > $POP3LIST && rm -f $TMP

rebuild_promailrc ()

----------- следующая часть -----------
#/bin/bash2

rebuild_procmailrc () {
	[ -z "$PROCMAILRC" ] && exit 3
	cat $1 | while read i; do
		echo ":0:	# POP3 user \'$USER\'" >> $PROCMAILRC.main
		echo "* ^TO.*$USER@$DOMAIN" >> $PROCMAILRC.main
		echo "! $USER" >> $PROCMAILRC.main
		echo >> $PROCMAILRC.main
	done
	cat $PROCMAILRC.{head,main,tail} > $PROCMAILRC
	rm -f $PROCMAILRC.main
}


Подробная информация о списке рассылки Sysadmins