Перенаправление почты при помощи exim

May 21, 2010 09:11


Покликали меня юзеры. Попросили у меня создать почтовый ящик, но только так, что бы вся почта, которая на домен приходит - должна в этот ящик попадать. И что бы все имена считались валидными. А дело происходило на доставшемся мне в наследство сервере под Debian, на котором установлен Exim4 в связке с MySQL. В детстве там работал Virtual Exim, но сразу после принятия мною этого сервера Virtual Exim сломался (делаю честные глаза, как будто я тут не при чём). Так что всё началось с заведения аккаунта на сервере. Задачка, надо сказать, не самая тривиальная


Небольшое изучение таблиц в базе vexim дало вот такой скрипт:

# cat /home/ххх/addmail
#!/bin/bash
echo «Создание почтового адреса $1@$2 на хостинге хххх.by»
if [ $# -ne "3" ]
then
echo «Порядок использования: `basename $0` имя домен пароль»
exit 1
fi
if [ $(id -u) -ne 0 ]; then
echo «Only root may add a user to the system»
exit 2
fi
cd /home/ххх
echo select domain_id from domains where domain=\’$2\’\; | mysql -u root -p` dom_id
dom_id=`cat dom_id`
rm dom_id
if [ "$dom_id" == "" ]; then
echo «Домен $2 не найден»
exit 2
fi
echo select username from users where username=\’$1@$2\’\; | mysql -u root -p` dom2
dom2=`cat dom2`
rm dom2
if [ "$dom2" != "" ]; then
echo «Адрес $1@$2 уже существует в базе.»
exit 2
fi
crypt_pass=`php -r «print crypt(‘$3′);»`
sqlline=`echo INSERT INTO users SET domain_id=$dom_id, localpart=\’$1\’, username=\’$1@$2\’, clear=\’$3\’, crypt=\’$crypt_pass\’, uid=90, gid=90, smtp=\’/usr/local/mail/$2/$1/Maildir\’, pop=\’/usr/local/mail/$2/$1\’, type=\’local\’,admin=0\;`
echo $sqlline | mysql -u root -p`

Но на этом дело не остановилось. Мне надо было ещё разобраться как сделать так, что бы система согласилась принимать почту для всех адресов нужного мне домена. Ну и складывало в этот самый созданный скриптом почтовый ящик. Изучение конфигов и документаций (русской и не русской) на exim повергло меня в уныние. Хитрый язык оказывался несколько непонятным для реализации на нём какой-то логики. Плюс к этому, ещё совсем не ясно кто, как и когда обращается в MySQL с запросами. Я спросил у ясеня, но ясень забросал меня осеннею листвой. А вот когда я спросил у правильных админов, то мне ответили.

Это всё ещё в работе, потому как оказалось, что rewrite не годится - надо что бы письма лежали в конкретном почтовом ящике, но адреса получателей сохранялись такими, какими их изначально отправили.
(c)

forward, debian, e-mail, linux, rewrite, exim, mail

Previous post Next post
Up