Dovecot + Exim4 без Mysql

D
На сайте с 05.06.2007
Offline
155
5523

Пытаюсь настроить почту Dovecot + Exim4 без Mysql, на файлах..

Так как делаю это впервые с exim приходится довольно таки сложно разобраться)

Dovecot оказался совсем простым, настроил чтение почты на /home/vmail/%u

где %u это емаил адрес (пользователь) - папка Maildir которая создаётся автоматически.


log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot-info.log

# Disable SSL for now.
ssl_disable = yes
disable_plaintext_auth = no

# We're using Maildir format
mail_location = maildir:~/Maildir

# If you're using POP3, you'll need this:
pop3_uidl_format = %08Xu%08Xv

# Optimizations:
maildir_copy_with_hardlinks=yes

# Authentication configuration:
auth_verbose = yes


auth default {
mechanisms = plain
passdb passwd-file {
args = /etc/dovecot/passwd
}
userdb static {
args = uid=vmail gid=vmail home=/home/vmail/%u

}

}

Теперь по Exim, чтобы он кидал почту в эти папки, сделал так:

maildir_home:
debug_print = "T: maildir_home for $local_part@$domain"
driver = appendfile
user = vmail
group = vmail
.ifdef MAILDIR_HOME_MAILDIR_LOCATION
directory = MAILDIR_HOME_MAILDIR_LOCATION
.else
directory = /home/vmail/$original_local_part@$original_domain/Maildir
.endif

Чтобы разрешить домены для принятия с них почты нашёл только такое:


#####################################################
### end router/200_exim4-config_primary
#####################################################


vdom_aliases:
debug_print = "R: vdom_aliases for $local_part@$domain"
driver = redirect
allow_defer
allow_fail
domains = dsearch;/etc/exim4/virtual
data = ${expand:${lookup{$local_part}lsearch*@{/etc/exim4/virtual/$domain}}}
retry_use_local_part
pipe_transport = address_pipe
file_transport = address_file
# not no_more - we try again without the suffix

vdom_aliases_suffix:
debug_print = "R: vdom_aliases_suffix for $local_part@$domain"
driver = redirect
local_part_suffix = -*
local_part_suffix_optional
allow_defer
allow_fail
domains = dsearch;/etc/exim4/virtual
data = ${expand:${lookup{$local_part}lsearch*@{/etc/exim4/virtual/$domain}}}
retry_use_local_part
pipe_transport = address_pipe
file_transport = address_file
no_more

Чтобы прописать домен необходимо было создать фаил /etc/exim4/virtual/$domain

в котором удалось прописать емейлы следующим образом:

user1 : vmail@localhost

user2 : vmail@localhost

- причём это для емейлов user1@$domain / user2@$domain, а vmail должен быть системным пользователем.. не уверен что это правильно..

Почта доставляется и читается через оутлок.

Теперь главный вопрос, как сделать чтобы проходила авторизация на SMTP где пользователь это не системный пользователь, а емеил.. т.е. чтобы авторизация как на POP3 так и на SMTP была с теми же данными. SMTP авторизацию у меня вообще никак не получилось сделать)

Вот такой код пробовал:

cram_md5:
driver = cram_md5
public_name = CRAM-MD5
client_name = ${extract{1}{:}{${lookup{$host}nwildlsearch{CONFDIR/passwd.client}{$value}fail}}}
client_secret = ${extract{2}{:}{${lookup{$host}nwildlsearch{CONFDIR/passwd.client}{$value}fail}}}

# this returns the matching line from passwd.client and doubles all ^
PASSWDLINE=${sg{\
${lookup{$host}nwildlsearch{CONFDIR/passwd.client}{$value}fail}\
}\
{\\N[\\^]\\N}\
{^^}\
}

plain:
driver = plaintext
public_name = PLAIN
.ifndef AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS
client_send = "<; ${if !eq{$tls_cipher}{}\
{^${extract{1}{:}{PASSWDLINE}}\
^${sg{PASSWDLINE}{\\N([^:]+:)(.*)\\N}{\\$2}}\
}fail}"
.else
client_send = "<; ^${extract{1}{:}{PASSWDLINE}}\
^${sg{PASSWDLINE}{\\N([^:]+:)(.*)\\N}{\\$2}}"
.endif

login:
driver = plaintext
public_name = LOGIN
.ifndef AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS
# Return empty string if not non-TLS AND looking up $host in passwd-file
# yields a non-empty string; fail otherwise.
client_send = "<; ${if and{\
{!eq{$tls_cipher}{}}\
{!eq{PASSWDLINE}{}}\
}\
{}fail}\
; ${extract{1}{::}{PASSWDLINE}}\
; ${sg{PASSWDLINE}{\\N([^:]+:)(.*)\\N}{\\$2}}"
.else
# Return empty string if looking up $host in passwd-file yields a
# non-empty string; fail otherwise.
client_send = "<; ${if !eq{PASSWDLINE}{}\
{}fail}\
; ${extract{1}{::}{PASSWDLINE}}\
; ${sg{PASSWDLINE}{\\N([^:]+:)(.*)\\N}{\\$2}}"
.endif

Есть идеи? может пару линков? кроме тех что на exim.org =)

Где я только не был нахожу только авторизацию с mysql..

Dimanych добавил 17.06.2008 в 18:25

Конфиг нашёл, вопрос решён )

Написал не мало шедевров ;)
A
На сайте с 30.06.2008
Offline
1
#1

exim умеет авторизацию через dovecot auth socket - достаточно указать путь к нему.

B
На сайте с 26.08.2008
Offline
0
#2
Dimanych:
Пытаюсь настроить почту Dovecot + Exim4 без Mysql, на файлах..
Так как делаю это впервые с exim приходится довольно таки сложно разобраться)
...
Dimanych добавил 17.06.2008 в 18:25
Конфиг нашёл, вопрос решён )

Вот ты молодец! Запостил тему, по ней через поисковик приходит народ, ищет кофиг и сосет хер! 😡

Не будьте эгоистами, господа - если тему открыл, то и закрой ее сам приведя решение вопроса.☝

WU
На сайте с 07.10.2007
Offline
173
#3

Dimanych, напишите до конца решение проблемы. Очень интересует.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий