EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
Jeison
- рядовой
- Сообщения: 25
- Зарегистрирован: 2007-12-08 0:52:36
Непрочитанное сообщение
Jeison » 2011-04-27 13:17:06
делал все по этой вот статье (если знаете более лучшую дайте линк)
http://www.opennet.ru/tips/info/2124.shtml
все сделал как там написано
Код: Выделить всё
freebsd# mail -s 'test message' admin@grantmotors.ru
teeeeest
.
EOT
freebsd# 2011-04-27 18:11:53 failed to expand "${lookup mysql{select host from domains where ip = '$interface_address'}{$value}{$primary_hostname} }" (smtp_active_hostname): lookup of "select host from domains where ip = ''" gave DEFER: MYSQL connection failed: Access denied for user 'exim'@'localhost' (using password: YES)
подскажите что именно ему не нравится? в конфиге я вроде нигде не нашел ни слова про мускул
Jeison
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Непрочитанное сообщение
hizel » 2011-04-27 13:51:24
в конфиге я вроде нигде не нашел ни слова про мускул
барабашки :-)
показывайте конфиг будем сообща искать
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
hizel
-
blade_007
- ст. прапорщик
- Сообщения: 571
- Зарегистрирован: 2010-03-12 12:59:08
-
Контактная информация:
Непрочитанное сообщение
blade_007 » 2011-04-27 15:44:09
Код: Выделить всё
MYSQL connection failed: Access denied for user 'exim'@'localhost' (using password: YES)
У вас проблема с mysql, возможно он НЕ запущен, либо параметры доступа (логин/пароль/БД) заданы неверно.
blade_007
-
Jeison
- рядовой
- Сообщения: 25
- Зарегистрирован: 2007-12-08 0:52:36
Непрочитанное сообщение
Jeison » 2011-05-04 9:05:27
с бд разобрался. сейчас вот такая вот фигня выскакивает:
Код: Выделить всё
May 4 09:56:44 freebsd dovecot: Dovecot v1.2.16 starting up
May 4 09:56:44 freebsd dovecot: net_connect_unix(/var/run/dovecot/auth-master) failed: No such file or directory
May 4 09:56:44 freebsd dovecot: Temporary failure in creating authentication processes, slowing down for now
May 4 09:56:44 freebsd dovecot: auth-worker(default): mysql: Connected to localhost (exim_db)
но при этом
Код: Выделить всё
ls /var/run/dovecot
auth-client auth-worker.0 dict-server login
auth-master auth-worker.1694 dovecot.conf master.pid
вот мои конфиги:
Код: Выделить всё
cat dovecot.conf
protocols = imap pop3
disable_plaintext_auth = no
shutdown_clients = yes
syslog_facility = mail
#ssl_disable = yes
ssl = no
login_greeting = Dovecot ready.
mail_location = maildir:/home/mail/domains/%d/%n/ maildir
mail_uid = 1001
mail_gid = 6
mail_privileged_group = mail
dotlock_use_excl = yes
fsync_disable = no
verbose_proctitle = yes
first_valid_uid = 26
first_valid_gid = 26
maildir_copy_with_hardlinks = yes
protocol imap {
login_executable = /usr/local/libexec/dovecot/imap-login
mail_executable = /usr/local/libexec/dovecot/imap
# login_greeting_capability = yes
imap_capability = yes
imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep
}
protocol pop3 {
login_executable = /usr/local/libexec/dovecot/pop3-login
mail_executable = /usr/local/libexec/dovecot/pop3
pop3_uidl_format = %08Xu%08Xv
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
auth_executable = /usr/local/libexec/dovecot/dovecot-auth
auth_process_size = 128
auth_verbose = no
auth_debug = no
auth_debug_passwords = no
auth default {
mechanisms = plain login
passdb sql {
args = /usr/local/etc/dovecot-sql.conf
}
userdb sql {
args = /usr/local/etc/dovecot-sql.conf
}
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
}
client {
path = /var/run/dovecot/auth-client
mode = 0660
}
}
}
auth external {
socket connect {
master {
path = /var/run/dovecot/auth-master
}
}
}
dict {
#quota = mysql:/usr/local/etc/dovecot-dict-quota.conf
#expire = db:/var/db/dovecot/expire.db
}
plugin {
}
Код: Выделить всё
cat dovecot-sql.conf
driver = mysql
connect = host=localhost dbname=exim_db user=exim password=****
default_pass_scheme = PLAIN
password_query = SELECT login AS username, password FROM accounts WHERE login='%u'
user_query = SELECT login AS username, maildir AS mail FROM accounts WHERE login='%u'
Код: Выделить всё
cat ./exim/configure
primary_hostname = freebsd.gm.ru
CONFIG_PREFIX=/usr/local/etc/exim
BASEIP = 192.168.0.72
qualify_domain = gm.ru
hide mysql_servers = localhost/exim_db/exim/****
host_lookup = *
domainlist local_domains = @:mysql;SELECT domain from domains where domain='$domain'
hostlist relay_from_hosts = localhost:127.0.0.0/8:192.168.0.0/24
message_id_header_domain = $sender_address_domain
acl_smtp_helo = acl_check_helo
acl_smtp_mail = acl_check_sender
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_mime = acl_check_mime
exim_user = mailnull
exim_group = mail
never_users = root
rfc1413_hosts = !*
rfc1413_query_timeout = 180s
dns_again_means_nonexist = !+local_domains
ignore_bounce_errors_after = 2d
timeout_frozen_after = 7d
message_size_limit = 25M
smtp_active_hostname = ${lookup mysql{select host from domains where ip = '$interface_address'}{$value}{$primary_hostname} }
smtp_banner = ${lookup mysql{select host from domains where ip = '$interface_address'}{$value}{$primary_hostname} } ESMTP Sendmail 8.14.3/8.14.3; $tod_full
#smtp_active_hostname = ${lookup mysql{select host from domains where ip = 're0'}{$value}{nechaevroman.ru} }
#smtp_banner = ${lookup mysql{select host from domains where ip = 're0'}{$value}{nechaevroman.ru} } ESMTP Exim + Mdaemon 8.14.3/8.14.3; $tod_full
spool_directory = /var/spool/exim
split_spool_directory = true
remote_max_parallel = 20
queue_run_max = 20
helo_allow_chars = :_
smtp_accept_max = 50
smtp_connect_backlog = 90
smtp_accept_max_per_host = 30
smtp_accept_queue = 67
smtp_accept_queue_per_connection = 30
recipients_max = 32
recipients_max_reject = true
accept_8bitmime
received_header_text = Received: \
${if def:sender_rcvhost {from $sender_rcvhost\n\t}\
{${if def:sender_ident {from $sender_ident }}\
${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}\
by ${lookup mysql{select host from domains where ip = '$interface_address'}{$value}{$primary_hostname} } \
${if def:received_protocol {with $received_protocol}} \
${if def:tls_cipher {($tls_cipher)\n\t}}\
(8.13.1/8.13.1)\n\t\
id $message_id\
${if def:received_for {\n\tfor $received_for}}
begin acl
acl_check_helo:
accept hosts = +relay_from_hosts : 127.0.0.1
deny message = Your host did not present HELO/EHLO greeting.
log_message = SPAM remote host did not present HELO/EHLO greeting.
condition = ${if def:sender_helo_name {false}{true}}
deny message = Your host used our name in HELO/EHLO greeting.
log_message = SPAM remote host used our name in HELO/EHLO greeting. (host: $sender_helo_name)
condition = \
${if \
match_domain{$sender_helo_name}\
{\
$primary_hostname:\
+local_domains\
}\
{true}{false}\
}
deny message = Your host used our name in HELO/EHLO greeting.
log_message = SPAM remote host used our name in HELO/EHLO greeting. (ip: $sender_helo_name)
condition = ${lookup mysql{select host from domains where host = '$sender_helo_name'}{true}{false}}
deny message = You host use dynamic address
log_message = SPAM remote host use dynamic address
condition = \
${if \
match{$sender_host_name}\
{\
^.*([.-]\\d\{1,3\})([.-]\\d\{1,3\}).*|\
^.*([.-]\\d\{1,3\}).*client.*|\
^.*client.*([.-]\\d\{1,3\}).*|\
^.*dial(up|in).*([.-]\\d\{1,3\}).*|\
^.*(\\d\{1,3\}[.-]?).*dial(up|in).*|\
^.*(\\d\{1,3\}[.-]?).*dsl.*|\
^.*dsl.*(\\d\{1,3\}[.-]?).*|\
^.*dhcp.*(\\d\{1,3\}[.-]?).*|\
^.*(\\d\{1,3\}[.-]?).*dhcp.*|\
^.*(\\d\{1,3\}[.-]?).*ppp.*|\
^.*ppp.*(\\d\{1,3\}[.-]?).*|\
^.*(\\d\{1,3\}[.-]?).*pool.*|\
^.*pool.*(\\d\{1,3\}[.-]?).*\
}\
{yes}{no}\
}
accept
acl_check_sender:
accept hosts = :
accept hosts = +relay_from_hosts
accept authenticated = *
deny senders = *@+local_domains
message = relay not permitted
warn verify = reverse_host_lookup
message = DNS-Warning: Reverse DNS lookup failed for host $sender_host_address
deny message = You domain is in a blacklist.
log_message = Remote domain in the blacklist
condition = ${lookup mysql{select domain from spam_domains where domain='$sender_address_domain'}{true}{false}}
deny message = You address is in a blacklist.
log_message = Address is in the blacklist
condition = ${lookup mysql{select sender from spam_emails where sender='$sender_address'}{true}{false}}
deny message = You host is in a blacklist.
log_message = Host is in the blacklist
condition = ${lookup mysql{select ip from spam_ip_senders where ip='$sender_host_address'}{true}{false}}
accept
acl_check_rcpt:
accept hosts = +relay_from_hosts
deny message = Restricted characters in address
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
deny message = Restricted characters in address
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
accept local_parts = postmaster
domains = +local_domains
require verify = sender
accept domains = +local_domains
endpass
verify = recipient
accept hosts = +relay_from_hosts
accept authenticated = *
deny message = relay not permitted
acl_check_mime:
warn decode = default
deny message = Blacklisted file extension detected
condition = ${if match \
{${lc:$mime_filename}} \
{\N(\.cpl|\.pif|\.bat|\.scr|\.lnk|\.com)$\N} \
{1}{0}}
deny message = Sorry, We do not speak in this language (charset: $mime_charset)
log_message = SPAM invalid language (charset: $mime_charset)
condition = \
${if \
match{${lc:$mime_charset}}\
{\
gb18030|\
shift_jis\
# big5\
}\
{true} {false}\
}
accept
warn message = WhiteListIP: YES
condition = ${lookup mysql{select ip from white_ip_senders where ip='$sender_host_address'}{true}{false}}
warn message = WhiteListDomain: YES
condition = ${lookup mysql{select domain from white_domains where domain='$sender_address_domain'}{true}{false}}
warn message = WhiteListSender: YES
condition = ${lookup mysql{select sender from white_emails where sender='$sender_address'}{true}{false}}
accept senders = ${lookup mysql{select sender from white_emails where sender='$sender_address'}{$sender_address}{}}
accept hosts = ${lookup mysql{select ip from white_ip_senders where ip='$sender_host_address'}{$sender_host_address}{}}
accept hosts = ${lookup mysql{select domain from white_domains where domain='$sender_address_domain'}{$sender_host_name}{}}
log_message = SPAM message header fail syntax check
!verify = header_syntax
warn message = X-Sender-Verify-Failed: No valid sender in message header
log_message = No valid sender in message header
!verify = header_sender
accept
begin routers
#replace_header:
# driver = dnslookup
# domains = !+local_domains
# transport = remote_smtp
# headers_remove = \
# ${if \
# def:h_RelayHost: \
# {}\
# {\
# Date : \
# X-MimeOLE : \
# X-Mailer : \
# X-MSMail-Priority : \
# User-Agent\
# }\
# }\
# : RelayHost : Received
# headers_add = \
# ${if \
# def:h_RelayHost: \
# {} \
# {\
# Date: $tod_full\n\
# User-Agent: Mozilla Thunderbird 2.0.0.22\
# }\
# }
# no_more
#
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more
system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{select alias from aliases where mail ='${quote_mysql:$local_part@$domain}'}{$value}fail}
user = mailnull
group = mail
file_transport = address_file
pipe_transport = address_pipe
userforward:
driver = redirect
file = ${lookup mysql{select maildir from accounts where login = '${quote_mysql:$local_part@$domain}'}{$value}fail}/.forward
user = mailnull
group = mail
no_verify
no_expn
check_ancestor
allow_filter
file_transport = address_file
pipe_transport = address_pipe
reply_transport = address_reply
condition = ${if exists{${lookup mysql{select maildir from accounts where login = '${quote_mysql:$local_part@$domain}'}{$value}fail}/.forward} {yes} {no} }
autoreply_router:
driver = accept
senders = "! ^.*-request@.*:\
! ^owner-.*@.*:\
! ^postmaster@.*:\
! ^listmaster@.*:\
! ^mailer-daemon@.*"
condition = ${if exists{AUTOREPLYPATH/$local_part@$domain}{yes}{no}}
unseen
no_expn
no_verify
transport = autoreply_transport
localuser:
driver = accept
condition = ${lookup mysql {select uid from accounts where login = '${quote_mysql:$local_part@$domain}'}{yes}{no}}
transport = local_delivery
cannot_route_message = Unknown user
begin transports
remote_smtp:
driver = smtp
connect_timeout = 3m
interface = ${lookup mysql{select ip from domains where domain = '$sender_address_domain'} {$value} {BASEIP} }
helo_data = ${lookup mysql{select host from domains where domain = '$sender_address_domain'} {$value} {$primary_hostname} }
local_delivery:
driver = appendfile
directory = ${lookup mysql{select maildir from accounts where login = '${quote_mysql:$local_part@$domain}'}{$value}fail}
create_directory
directory_mode = 0770
maildir_format
delivery_date_add
envelope_to_add
return_path_add
user = mailnull
group = mail
mode = 0660
no_mode_fail_narrower
headers_remove = ${if match_domain{$sender_address_domain}{+local_domains}{received}{}} : RelayHost
quota = ${lookup mysql{select mailquota from accounts where login = '${quote_mysql:$local_part@$domain}'}{$value}fail}M
quota_warn_message = "\
To: $local_part@domain\n\
Subject: Your maildir is going full\n\
This message is automaticaly gnerated by your mail server.\n\
This means, that your mailbox is 75% full. If you would \n\
override this limit new mail would not be delivered to you!\n"
quota_warn_threshold = 75%
address_pipe:
driver = pipe
return_output
address_file:
driver = appendfile
delivery_date_add
envelope_to_add
return_path_add
autoreply_transport:
driver = autoreply
file = AUTOREPLYPATH/$local_part@$domain
log = AUTOREPLYPATH/log/$local_part@$domain
file_expand
from = $local_part@$domain
to = $sender_address
user = mailnull
subject = Re: $h_subject:
address_reply:
driver = autoreply
begin retry
* * F,4h,5m; G,16h,1h,1.5; F,4d,6h
begin rewrite
begin authenticators
lookup_cram:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${lookup mysql {select password from accounts where login='$1'}{$value}fail}
server_set_id = $1
login:
driver = plaintext
public_name = LOGIN
server_prompts = Username:: : Password::
server_condition = ${lookup mysql {select login from accounts where login='$1' and password='$2'}{yes}{no}}
server_set_id = $1
Jeison
-
blade_007
- ст. прапорщик
- Сообщения: 571
- Зарегистрирован: 2010-03-12 12:59:08
-
Контактная информация:
Непрочитанное сообщение
blade_007 » 2011-05-04 10:02:46
Код: Выделить всё
net_connect_unix(/var/run/dovecot/auth-master) failed: No such file or directory
Проблема с запуском dovecot. Остановите dovecot, удалите старые auth-master, auth-client из /var/run/dovecot. также включите debug для сообщений и запустите dovecot.
blade_007
-
Jeison
- рядовой
- Сообщения: 25
- Зарегистрирован: 2007-12-08 0:52:36
Непрочитанное сообщение
Jeison » 2011-05-04 14:51:04
Код: Выделить всё
# tail /var/log/maillog
May 4 15:49:29 freebsd dovecot: Dovecot v1.2.16 starting up
May 4 15:49:29 freebsd dovecot: net_connect_unix(/var/run/dovecot/auth-master) failed: No such file or directory
May 4 15:49:29 freebsd dovecot: Temporary failure in creating authentication processes, slowing down for now
May 4 15:49:29 freebsd dovecot: auth-worker(default): mysql: Connected to localhost (exim_db)
May 4 15:49:30 freebsd dovecot: auth(default): new auth connection: pid=1349
May 4 15:49:30 freebsd dovecot: auth(default): new auth connection: pid=1350
May 4 15:49:30 freebsd dovecot: auth(default): new auth connection: pid=1351
May 4 15:49:30 freebsd dovecot: auth(default): new auth connection: pid=1352
May 4 15:49:30 freebsd dovecot: auth(default): new auth connection: pid=1353
May 4 15:49:30 freebsd dovecot: auth(default): new auth connection: pid=1354
с дебагом вот это пишет. понятия не имею что сие означает

Jeison
-
Jeison
- рядовой
- Сообщения: 25
- Зарегистрирован: 2007-12-08 0:52:36
Непрочитанное сообщение
Jeison » 2011-05-05 9:23:05
вообщем с чем то разобрался, с чем то не очень. сейчас такая беда. создаю через postfixadmin пользователей, он и создается в таблице postfix, а exim про них ничего и не знает. как сделать чтоб постфикс создавал пользователей и эксзим их видел?
Jeison
-
blade_007
- ст. прапорщик
- Сообщения: 571
- Зарегистрирован: 2010-03-12 12:59:08
-
Контактная информация:
Непрочитанное сообщение
blade_007 » 2011-05-05 9:32:57
Поменять запросы в роутерах exim. На сайте (не форуме) есть статья как прикрутить postfixadmin к exim. Можно также заменить postfixadmin на vexim.
blade_007