Уважаемая публика,давно не могу справиться с задачкой по Exim'u.
Система такая:
я представляю организацию ISP. Мы в частности хостим сайты и поддерживаем почтовые домены.
есть exim, поддерживаются виртуальные домены.
Данные о доменах, логинах и паролях пользователей лежат в базе mysql.
Необходимо сделать так, чтобы отправлять почту через этот mail сервер можно было только по 465 порту (smtps) и к тому же только если была произведена SMTP авторизация. И только в таком случае, письмо может быть отправлено.
Итак если алгоритмично представить задачу, то:
1. Если у пользователя в почтовом клиенте стоит 25 порт, то при отправке ему должен быть показан болт. (т.к. разрешено отправлять через 465).
2. Если у пользователя в почтовом клиенте стоит 265 порт, но не сказано, что необходима SMTP авторизация, то ему также должен быть показан болт.
3. Если у него в настройках 465 порт и стоит SMTP авторизация, и она прошла успешно, то тогда письмо отправляется.
Я понял из своего опыта и чтения статей в тырнете, что 3 пункт реализуется добавлением аутентификаторов:
begin authenticators
auth_login:
driver = plaintext
public_name = LOGIN
server_condition = ${lookup mysql{SELECT login FROM users \
WHERE login = '${quote_mysql:${local_part:$1}}' \
AND domain = '${quote_mysql:${domain:$1}}' \
AND decrypt = '${quote_mysql:$2}' \
AND status = '1'}{yes}{no}}
server_prompts = Username:: : Password::
server_set_id = $1
auth_cram_md5:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${lookup mysql{SELECT decrypt FROM users \
WHERE login = '${quote_mysql:${local_part:$1}}' \
AND domain = '${quote_mysql:${domain:$1}}' \
AND status = '1'}{$value}fail}
server_set_id = $1
Как видите, я написал 2 аутентификатора для Outlook Express и TheBat, т.к. у них разные типы SMTP авторизации.
Для справки, данные пользователей в следующих полях таблицы:
пароль: decrypt
логин: login
Теперь осталось понять, как реализовать 1,2 пункты моего "алгоритма". Помогите, если кто-либо делал подобное.
Буду очень благодарен