26

Re: Dovecot недаставляет почту локальному пользователю!

а не virtual:virtual должен быть хозяин папко. файлов?

27

Re: Dovecot недаставляет почту локальному пользователю!

я вчера настроил себе новый почтовик, все работает на ура, как будит время сегодня-завтро покажу конфиги.

28

Re: Dovecot недаставляет почту локальному пользователю!

завтро покажу конфиги.

Буду очень признателен!

а не virtual:virtual должен быть хозяин папко. файлов?

Вечером перепроверю! Спс

29

Re: Dovecot недаставляет почту локальному пользователю!

Значит так, поскольку dovecot это родственник cyrus'a, сильно невникал в родственные связи, но идейный точно. Так вот, есть два вида настройки связки postfix'a и dovecot'a - это как две отдельные системы, которые пересикаются между собой только в почтовой директории, когда работают с файлами либо настройка doverco'a как транспорт postfix'a. На мой взгляд когда постфикс и доверкот работают отдельно лучший вареант, но у второго тоже есть плюсы, например sieve, поэтому я его и использую, но об этом потом.

Такс, постфикс. Впринципи virtual ненужен, но я его оставил на тот случай если доверкот загнется и нужно будит чтобы постфикс принимал письма. Мне просто надо будит поменять транспорт и авторизацию и постфикс забудит про доверкот. Да и тестировать так проще, настраиваем постфикс, смотрим принимает ли он письма а потом настраиваем доверкот.

Postfix собираем так

[X] PCRE      Perl Compatible Regular Expressions
[X] SASL2     Cyrus SASLv2 (Simple Auth. and Sec. Layer)
[X] DOVECOT   Dovecot SASL authentication method
[X] TLS       Enable SSL and TLS support
[X] MYSQL     MySQL maps (choose version with WITH_MYSQL_VER)
[X] VDA       VDA (Virtual Delivery Agent 32Bit)

создаем одного пользователя, можно и без него

# id virtual
uid=1001(virtual) gid=6(mail) groups=6(mail)

main.cf

queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix
mail_owner = postfix
unknown_local_recipient_reject_code = 550
mynetworks_style = host
debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
setgid_group = maildrop
html_directory = /usr/local/share/doc/postfix
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = /usr/local/share/doc/postfix
myhostname = mail.domain.lt
mydomain = domain.lt
myorigin = $mydomain
smtpd_banner = DOMAIN.LT ESMTP
virtual_mailbox_base = /mail/virtual
mail_spool_directory = /mail
transport_maps = mysql:/usr/local/etc/postfix/mysql-transport.cf
virtual_transport = $transport_maps
# dovecote on
dovecot_destination_recipient_limit = 1
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql-users.cf
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql-aliases.cf
#virtual_mailbox_limit_override = yes
#virtual_maildir_extended = yes
#virtual_create_maildirsize = yes
#virtual_overquota_bounce = yes
#virtual_create_maildirsize = yes
#virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mysql-quota.cf
virtual_uid_maps = static:125
virtual_gid_maps = static:6
smtpd_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = PLAIN, LOGIN
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_use_tls = yes
smtpd_tls_key_file = /usr/local/etc/ssl/private/dovecot.pem
smtpd_tls_cert_file = /usr/local/etc/ssl/certs/dovecot.pem
smtpd_tls_loglevel = 1
tls_random_source = dev:/dev/urandom
local_recipient_maps = $virtual_mailbox_maps $transport_maps
smtpd_sender_login_maps = $virtual_mailbox_maps $virtual_alias_maps $transport_maps
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8
relay_domains = $transport_maps
smtpd_helo_required = yes
strict_rfc821_envelope = yes
smtpd_sender_restrictions =
 permit_sasl_authenticated,
 permit_mynetworks,
 reject
smtpd_recipient_restrictions =
 permit_sasl_authenticated,
 permit_mynetworks,
 reject_non_fqdn_recipient,
 reject_non_fqdn_hostname,
 reject_non_fqdn_sender,
 reject_unauth_destination,
 reject_unauth_pipelining,
 reject_invalid_hostname,
 reject_unknown_recipient_domain,
 reject_rbl_client dnsbl.njabl.org,
 reject_rbl_client list.dsbl.org,
 reject_rbl_client sbl.spamhaus.org,
 reject_rbl_client xbl.spamhaus.org

master.cf - ничего не менял, просто в конце добавил

dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=virtual:mail argv=/usr/local/libexec/dovecot/deliver -f ${sender} -d ${recipient}

Структура файлов у меня такая, причем неважно есть ли уже "domain.lt/pupkin.v" или нет, если пользователь vitrual может писать в "/mail/virtual/" то как postfix так и dovecot все создадут сами. (дириктории неумеет создавать maildrop о нем подробнее тут https://unix-forum.ru/topic419.html)

mail# pwd
/mail/virtual/domain.lt/pupkin.v
mail# ls -la
total 50
drwx------  8 virtual  mail    512 Mar  5 00:17 .
drwx------  4 virtual  mail    512 Mar  4 23:20 ..
drwx------  5 virtual  mail    512 Mar  4 23:14 .Drafts
drwx------  5 virtual  mail    512 Mar  5 00:15 .Sent Items
drwx------  5 virtual  mail    512 Mar  5 00:17 .share
drwx------  2 virtual  mail   1024 Mar  5 00:16 cur
-rw-------  1 virtual  mail    552 Mar  5 00:16 dovecot-uidlist
-rw-------  1 virtual  mail      8 Mar  5 00:17 dovecot-uidvalidity
-rw-------  1 virtual  mail      0 Mar  4 23:12 dovecot-uidvalidity.4b903e78
-rw-------  1 virtual  mail  20480 Mar  5 00:16 dovecot.index.cache
-rw-------  1 virtual  mail   5380 Mar  5 00:16 dovecot.index.log
-rw-------  1 virtual  mail    171 Mar  5 00:17 maildirsize
drwx------  2 virtual  mail    512 Mar  5 00:16 new
-rw-------  1 virtual  mail     30 Mar  5 00:17 subscriptions
drwx------  2 virtual  mail    512 Mar  5 00:16 tmp

Теперь dovecot

собераем так

[X] KQUEUE       kqueue(2) support
[X] SSL          SSL support
[X] MANAGESIEVE  ManageSieve support
[X] MYSQL        MySQL support

dovecot.conf

protocols = imap pop3 imaps pop3s
disable_plaintext_auth = no
ssl = yes
ssl_cert_file = /usr/local/etc/ssl/cert.pem
ssl_key_file = /usr/local/etc/ssl/key.pem
login_greeting = POP/IMAP Server Ready.
mail_location = maildir:/mail/virtual/%d/%n
mail_uid =1001
mail_gid =1001
mail_privileged_group = mail
mail_debug = yes
dotlock_use_excl = yes
verbose_proctitle = yes
first_valid_uid = 1001
last_valid_uid = 1001
first_valid_gid = 6
last_valid_gid = 6
maildir_copy_with_hardlinks = yes
protocol imap {
    mail_plugins = quota imap_quota
}
protocol pop3 {
    mail_plugins = quota
}
protocol lda {
    sendmail_path = /usr/sbin/sendmail
    postmaster_address = [email protected]
    hostname = mail.domain.lt
    mail_plugins = quota
    uota_full_tempfail = no
}
auth_username_format = %n@%d
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
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 = 0660
            user = virtual
            group = mail
        }
        client {
            path = /var/spool/postfix/private/auth
            mode = 0660
            user = postfix
            group = mail
        }
    }
}
plugin {
    quota = maildir
}

dovecot-sql.conf (я не переделывал свою базу пользователей со старых времен, поэтому пришлось немного подправить sql запросы.)

driver = mysql
connect = host=HOST dbname=BASE user=USER password=PASSWORD
default_pass_scheme = PLAIN
user_query = SELECT \
    CONCAT ("/mail/virtual/",maildir) AS home, \
        concat('*:bytes=',quota) AS quota_rule, \
        "1001" AS uid, \
        "6" AS gid \
FROM users WHERE login = '%u' AND allow_imap = '1'
password_query = SELECT \
    login AS user, \
    plainpass AS password, \
    maildir AS userdb_home, \
    concat('*:bytes=',quota) as userdb_quota_rule, \
    "1001" AS userdb_uid, \
    "6" AS userdb_gid \
FROM users WHERE login = '%u' AND allow_imap = '1'

помойму ничего не забыл...

Добавлено: 07-03-2010 12:42:10

Продолжаем танцы с бубном, ставил sieve

порты dovecot-managesieve и dovecot-sieve после установки добавляем в dovecot.conf

protocols = imap pop3 imaps pop3s managesieve

и в lda

mail_plugins = quota sieve

После перезагрцзки должен прослушиватся порт

mail# sockstat -l|grep 2000
dovecot  managesiev 2305  4  tcp4   10.0.0.18:2000        *:*
dovecot  managesiev 2304  4  tcp4   10.0.0.18:2000        *:*
dovecot  managesiev 2303  4  tcp4   10.0.0.18:2000        *:*
root     dovecot    2300  10 tcp4   10.0.0.18:2000        *:*

и в почтовой директори появится sieve файлы

mail# pwd
/mail/virtual/domain.lt/pupkin.v
mail# ls -la
total 54
drwx------  9 virtual  mail    512 Mar  7 12:24 .
drwx------  3 virtual  mail    512 Mar  6 19:59 ..
drwx------  5 virtual  mail    512 Mar  6 20:37 .INBOX.Drafts
drwx------  5 virtual  mail    512 Mar  6 20:40 .INBOX.Sent
drwx------  5 virtual  mail    512 Mar  6 21:03 .INBOX.Trash
lrwx------  1 virtual  mail     50 Mar  6 21:11 .dovecot.sieve -> /mail/virtual/domain.lt/pupkin.v/sieve/phpscript.sieve
-rw-------  1 virtual  mail    273 Mar  7 12:24 .dovecot.svbin
drwx------  2 virtual  mail    512 Mar  6 21:03 cur
-rw-------  1 virtual  mail    233 Mar  7 12:20 dovecot-uidlist
-rw-------  1 virtual  mail      8 Mar  6 20:37 dovecot-uidvalidity
-rw-------  1 virtual  mail      0 Mar  6 19:59 dovecot-uidvalidity.4b92b439
-rw-------  1 virtual  mail  20480 Mar  7 12:20 dovecot.index.cache
-rw-------  1 virtual  mail   5848 Mar  7 12:20 dovecot.index.log
-rw-------  1 virtual  mail    170 Mar  7 12:20 maildirsize
drwx------  2 virtual  mail    512 Mar  7 12:20 new
drwx------  3 virtual  mail    512 Mar  6 21:11 sieve
-rw-------  1 virtual  mail     36 Mar  6 20:36 subscriptions
drwx------  2 virtual  mail    512 Mar  7 12:20 tmp

Для администрирования фильтров пользователем я использую

Avelsieve or Sieve Mail Filters Plugin for Squirrelmail is a Squirrelmail plugin for creating Sieve scripts on a Sieve-compliant mail server.

Добавлено: 07-03-2010 12:45:21

Вычитал что надо поменять немного в master.cf команду, а именно добавить -a ${recipient}

dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=virtual:mail argv=/usr/local/libexec/dovecot/deliver -f ${sender} -d ${recipient} -a ${recipient}