LINUX.ORG.RU
ФорумAdmin

Хранение почты Exim4.

 , ,


0

2

Доброго дня! Есть несколько вопросов, касательно почтаря:

-возможно ли хранить письма в другом месте, а не на сервере(/var/mail), допустим на отдельной хранилке? Где в конфиге exim4 задать путь?

-есть ли у клиента возможность (Thunderbird) поставить параметр «Забирать почту с сервера» как например в Outlook?

-допустим, файловое хранилище переполнено письмами. Есть какая-либо ротация, например как с лог-файлами(logrotate)?

Заранее спасибо!

p.s. По поводу «Забирать почту с сервера» - разобрался, если задействован IMAP, то данная функция недоступна. Верно?



Последнее исправление: Rayman24 (всего исправлений: 3)

Ответ на: комментарий от r3lgar

Все пользователи ущемлены в правах. Развернут домен. Я имею ввиду, в самом почтовом клиенте thunderbird.

Rayman24
() автор топика
Ответ на: комментарий от Rayman24

Все пользователи ущемлены в правах.

На клиенте, или на сервере? Я щаз о клиенте.

thunderbird

Всё-всё, я удаляюсь, я случайно зашёл.

r3lgar ★★★★★
()

-есть ли у клиента возможность (Thunderbird) поставить параметр «Забирать почту с сервера» как например в Outlook?

Это вы о чем? О pop3 видимо? Да вроде так же как и у всех mua.

p.s. По поводу «Забирать почту с сервера» - разобрался, если задействован IMAP, то данная функция недоступна. Верно?

Верно. Но если я правильно понял чего хотите, то у той же тундры, создаете фильтры которые будут перемещать почту в local folders, получите аналог pop3.
Только эта локальная хранилка на вашем единственном устройстве будет. Никаких радостей imap уже не получите.

anc ★★★★★
()
Ответ на: комментарий от anc

Я имею ввиду на сервере, где установлен почтарь. Где изменить хранение почты, заместо /var/mail. Тогда встречный вопрос, по поводу thunderbird. Да, действительно, в настройках можно изменить путь хранения писем. Клиенту это никак не получится запретить?

Rayman24
() автор топика
Ответ на: комментарий от Rayman24

Где изменить хранение почты, заместо /var/mail

А зачем это вобще нужно?
Если другая папка, то наверняка есть какая-то настройка в конфиге - почтай документацию.

-возможно ли хранить письма в другом месте, а не на сервере(/var/mail), допустим на отдельной хранилке?

Если хочешь на другом сервере, то лучше задействовать базу данных, например MySQL. Экзим почти все SQL поддерживает.

-допустим, файловое хранилище переполнено письмами. Есть какая-либо ротация, например как с лог-файлами(logrotate)?

Когда сделаешь СУБД, можно будет сделать скриптом «автоочистку» старых. Причем, скрипт можно будет вызывать отдельно cron'ом по расписанию или в самом почтовом запросе (прописать его в конфиге).

-есть ли у клиента возможность (Thunderbird) поставить параметр «Забирать почту с сервера» как например в Outlook?

В клиентах есть галочка «удалять письма на сервере».
Это плюшка, как я понимаю, входит в протокол POP3. Т.е. экзим тут непричём (он SMTP) - тебе нужно прикрутить, например, dovecot, и в нем уже реализовать.

Novator ★★★★★
()
Ответ на: комментарий от Rayman24

Тебе уже несколько раз написали, что exim - MTA и он не занимается хранением и отдачей почты. Ты это ингорируешь, а зря.

constin ★★★★
()
Ответ на: комментарий от constin

интересно так, почему когда я конфигурирую ексим dpkg-reconfigure exim4-config, меня спрашивает где хранить почту? в /var/mail или Maildir? Ладно, ОК! Нашел я что за это dovecot отвечает. Изменил в /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/opt/mail/%U перезапустил демона, письма отправляются но не доходят до адресата..

Rayman24
() автор топика
Ответ на: комментарий от Rayman24

интересно так, почему когда я конфигурирую ексим dpkg-reconfigure exim4-config, меня спрашивает где хранить почту? в /var/mail или Maildir?

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

Вот небольшой ликбез: Есть MTA( Mail transfer agent) и есть MDA (Mail Delivery Agent). К MTA относятся Exim, Postfix, Sendmail. К MDA относятся dovecot,Cyrus и тд.

MTA занимается общением с другими почтовыми серверами. Полученные письма он отдает MDA. Те SMTP

MDA занимается общением с почтовыми клиентами (Thunderbird), а так же хранением , складыванием почты. IMAP/POP3

Таким образом Exim должен быть настроен на отдачу входящих писем MDA( после проверки на спам/принадлежность к обслуживаемым доменам и тд и тп)

Эта задача не решается простым dpkg-reconfigure exim4-config

Вам нужно( я советую) поставить еще dovecot. И найти статью по настройке связки exim+dovecot

constin ★★★★
()
Ответ на: комментарий от Rayman24

Нашел я что за это dovecot отвечает. Изменил в /etc/dovecot/conf.d/10-mail.conf

Это не происходит по волшебству, Exim должен знать, что он отдает письма dovecot. и это не конфигурируется через dpkg-reconfigure exim4-config

constin ★★★★
()
Ответ на: комментарий от Rayman24

Вот тут есть рабочий мануал

http://vladimir-stupin.blogspot.com/2014/05/exim-dovecot-sql.html

Или можете поставить vesta ( на чистую ось) и поглядеть их конфги ( или вообще использовать, так как вам проще будет испольтщзовать готовое решение, если целью не является разобраться , как это все работает и настраивается)

# Download installation script
curl -O http://vestacp.com/pub/vst-install.sh
# Run it
bash vst-install.sh --nginx yes --phpfpm yes --apache no --named no --remi no --vsftpd no --proftpd no --iptables no --fail2ban no --quota no --exim yes --dovecot yes --spamassassin yes --clamav yes --softaculous no --mysql yes --postgresql no
constin ★★★★
()
Последнее исправление: constin (всего исправлений: 2)
Ответ на: комментарий от Rayman24

у меня и настроена связка exim+dovecot

я в этом не уверен. Скорее всего они у вас просто установлены, но не настроены

constin ★★★★
()
Ответ на: комментарий от Rayman24

И как тогда у меня по вашему почта ходит между доменными учетками?

Если у вас настроена связка, тогда нужно изменить пост и выложить конфиги exim и dovecot.

constin ★★★★
()
Ответ на: комментарий от Rayman24

Изменил в /etc/dovecot/conf.d/10-mail.conf

И не факт, что dovecot читает этот конфиг. Если будете выкладывать конфиги, то покажите еще

ls /etc/dovecot
constin ★★★★
()
Ответ на: комментарий от constin

у меня конфигурация разделена на маленькие файлы. Запарюсь выкладывать, я всего лишь интересуюсь, где изменить хранилище почты.

Rayman24
() автор топика
Ответ на: комментарий от Rayman24

у меня конфигурация разделена на маленькие файлы. Запарюсь выкладывать, я всего лишь интересуюсь, где изменить хранилище почты.

пример:

mail_location = maildir:/mail/%d/%n
mail_home = /mail/%d/%n

перезапустил демона, письма отправляются но не доходят до адресата..

а что логах?

и есть ли права у dovecot писать в вашу /opt/mail?

constin ★★★★
()
Последнее исправление: constin (всего исправлений: 1)
Ответ на: комментарий от Rayman24

да права выставил chown -R 777 /opt/mail

это костыль. и exim и dovecot должны быть в одной группе, которой принадлежат все их рабочие папки

типа так:

groupadd -g 5000 vmail
useradd -s /usr/sbin/nologin -u 5000 -g 5000 vmail
usermod -aG vmail exim
usermod -aG vmail dovecot
chown -R vmail:vmail /opt/mail

но это детали. вы не ответили, что в логах

constin ★★★★
()
Последнее исправление: constin (всего исправлений: 3)
Ответ на: комментарий от constin

Не обязательно.

Eixm умеет раскладывать сообщения по папкам от любого пользователя.И dovecot умеет читать папки любым пользователем

libert0
()
Ответ на: Не обязательно. от libert0

Не обязательно.

да, давайте будем настраивать это несколько раз в разных местах, вместо того, чтобы отдать письмо MDA, раз уж exim умеет класть письмо в папочку.

constin ★★★★
()
Ответ на: комментарий от constin

Конфиг по умолчанию.

У ТС конфиг exim из коробки.Доставка осуществляется от пользователя mail.

libert0
()

Где в конфиге exim4 задать путь?

Найти строку (строки) содержащие /var/mail и поменять на желаемое.

libert0
()
Ответ на: комментарий от Rayman24

Портянку из маленьких файлов можно посмотреть тут /var/lib/exim4/config.autogenerated При изменение конфига нужно запускать команду чтобы эта портянка обновлялась иначе у вас будут использоваться старый конфиг.

anonymous
()
Ответ на: комментарий от Rayman24

Тогда встречный вопрос, по поводу thunderbird. Да, действительно, в настройках можно изменить путь хранения писем. Клиенту это никак не получится запретить?

Брр не совсем понял зачем это надо?

anc ★★★★★
()
Ответ на: комментарий от constin

Вот конфиг


administrator@srv01:~# doveconf -n
# 2.1.7: /etc/dovecot/dovecot.conf
# OS: Linux 4.2.0-23-generic x86_64 Astra Linux SE 1.5 (Smolensk) ext4
auth_gssapi_hostname = srv01.local.ru
auth_krb5_keytab = /var/lib/dovecot/dovecot.keytab
auth_mechanisms = gssapi
listen = 192.168.10.22
log_path = /var/log/dovecot
mail_location = maildir:/var/mail/%u
namespace inbox {
  inbox = yes
  location =
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix =
}
passdb {
  driver = pam
}
protocols = imap
service auth {
  unix_listener auth-client {
    mode = 0600
    user = Debian-exim
  }
}
ssl = no
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem
userdb {
  driver = passwd
}


Меняю в строке: mail_location = maildir:/var/mail/%u на /opt/mail/%u отправляю письмо. оно улетает. в /opt/mail создаются каталоги клиентов. Но письмо так и не приходит клиенту.

Rayman24
() автор топика
Ответ на: комментарий от Rayman24

Показывай кусок отправленного письма в логах /var/log/mail.log и /var/log/exim4/mainlog

anonymous
()
Ответ на: комментарий от Rayman24
touch /var/log/dovecot.log
chown dovecot:dovecot /var/log/dovecot.log
chmod 660 /var/log/dovecot.log

dovecot config:

log_path = /var/log/dovecot.log

reload dovecot

далее смотрим лог.

constin ★★★★
()
Ответ на: комментарий от Rayman24

У тебя связка exim + dovecot. В настройках обоих надо сделать одинаковые каталоги для сообщений. За права 777 двойка.Надо ставить правильного владельца группу.(скопировать с /var/mail)

libert0
()
Ответ на: комментарий от libert0

Вот весь конфиг поломали по незнанию.

по незнанию?? ;)

Dovecot засирает mail.log ненужной херней. Когда ты смотришь логи уже рабочей системы в попытке пропарсить какую-то проблему с MTA, поверь, тебе не хочется видеть кучу мусора от dovecot. Поэтому заставить dovecot писать свой отдельный лог - очень хорошая идея.

constin ★★★★
()
Последнее исправление: constin (всего исправлений: 1)
Ответ на: комментарий от libert0

Эмм..изначально из коробки dovecot вообще никуда ни писал. Поэтому и сделал по аналогии с eximом, отдельный лог.

Rayman24
() автор топика
Ответ на: комментарий от Rayman24

Может уровень логирования был маленький? Или не делал ничего? У меня из коробки логины пользователей пишет.

libert0
()
Ответ на: комментарий от constin

вот, изменил путь и отправил письмо лог dovecot

Aug 22 08:24:44 master: Info: Dovecot v2.1.7 starting up (core dumps disabled)
Aug 22 08:26:09 master: Warning: Killed with signal 15 (by pid=12425 uid=0 code=kill)
Aug 22 08:26:09 master: Info: Dovecot v2.1.7 starting up (core dumps disabled)
Aug 22 08:26:37 imap-login: Info: Login: user=<abi>, method=GSSAPI, rip=192.168.22.21, lip=192.168.22.21, mpid=12465, secured, session=<wdXtYv9zvADAqBYV>
Aug 22 08:26:37 imap(abi): Info: Current process with pid=12465 ppid=12430 (level=0, category=0x0)
Aug 22 08:26:37 imap(abi): Info: Current socket (level=0, category=0x0)
Aug 22 08:26:37 imap(abi): Info: getmacnam_r = OK
Aug 22 08:26:37 imap(abi): Info: Result of mac_set_proc() is 0 for pid 12465 (Invalid argument)
Aug 22 08:26:37 imap(abi): Info: Process with pid=12465 (level=0, category=0x0)
Aug 22 08:26:37 imap(abi): Info: /usr/sbin/astrase-fix-maildir /opt/mail/abi
Aug 22 08:26:37 imap(abi): Info: /usr/sbin/astrase-fix-maildir /opt/mail/abi/.Sent
Aug 22 08:26:50 imap-login: Info: Login: user=<abi>, method=GSSAPI, rip=192.168.22.21, lip=192.168.22.21, mpid=12486, secured, session=<LYqxY/9zygDAqBYV>
Aug 22 08:26:50 imap(abi): Info: Current process with pid=12486 ppid=12430 (level=0, category=0x0)
Aug 22 08:26:50 imap(abi): Info: Current socket (level=0, category=0x0)
Aug 22 08:26:50 imap(abi): Info: getmacnam_r = OK
Aug 22 08:26:50 imap(abi): Info: Result of mac_set_proc() is 0 for pid 12486 (No such file or directory)
Aug 22 08:26:50 imap(abi): Info: Process with pid=12486 (level=0, category=0x0)
Aug 22 08:26:50 imap(abi): Info: /usr/sbin/astrase-fix-maildir /opt/mail/abi
Aug 22 08:26:50 imap(abi): Info: /usr/sbin/astrase-fix-maildir /opt/mail/abi/.Sent
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534768811.M389783P28169.srv001,S=325,W=337:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=1)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534768849.M303060P28169.srv001,S=330,W=342:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=2)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534771571.M270978P29302.srv001,S=327,W=339:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=3)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534772711.M525785P5141.srv001,S=322,W=334:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=4)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534915597.M232115P12465.srv001,S=350,W=362:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=5)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534768811.M389783P28169.srv001,S=325,W=337:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=1)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534768849.M303060P28169.srv001,S=330,W=342:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=2)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534771571.M270978P29302.srv001,S=327,W=339:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=3)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534772711.M525785P5141.srv001,S=322,W=334:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=4)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534915597.M232115P12465.srv001,S=350,W=362:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=5)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534768811.M389783P28169.srv001,S=325,W=337:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=1)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534768849.M303060P28169.srv001,S=330,W=342:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=2)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534771571.M270978P29302.srv001,S=327,W=339:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=3)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534772711.M525785P5141.srv001,S=322,W=334:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=4)
Aug 22 08:26:50 imap(abi): Info: Try to open mail /opt/mail/abi/.Sent/cur/1534915597.M232115P12465.srv001,S=350,W=362:2,S (level = 0) process_level = 0 uid=2503
Aug 22 08:26:50 imap(abi): Info: Send mail(level=0, category=0x0, uid=5)

$ /var/log/exim4/mainlog

2018-08-22 08:26:37 1fsLfB-0003Et-3l <= abi@local.ru H=srv001.local.ru [192.168.22.21] P=esmtpa A=dovecot_gssapi:abi S=541 id=5B7CF40D.8030901@local.ru
2018-08-22 08:26:37 1fsLfB-0003Et-3l Berkeley DB error: fop_read_meta: /var/spool/exim4/db/retry: unexpected file type or format
2018-08-22 08:26:37 1fsLfB-0003Et-3l Berkeley DB error: fop_read_meta: /var/spool/exim4/db/retry: unexpected file type or format
2018-08-22 08:26:37 1fsLfB-0003Et-3l => abi <system-filter> R=local_user T=maildir_home
2018-08-22 08:26:37 1fsLfB-0003Et-3l Berkeley DB error: fop_read_meta: /var/spool/exim4/db/retry: unexpected file type or format
2018-08-22 08:26:37 1fsLfB-0003Et-3l => user2 <user2@local.ru> R=local_user T=maildir_home
2018-08-22 08:26:37 1fsLfB-0003Et-3l Completed

Rayman24
() автор топика
Последнее исправление: Rayman24 (всего исправлений: 2)
Ответ на: комментарий от constin

cat /etc/exim4/conf.d/transport/30_exim4-config_mail_spool

### transport/30_exim4-config_mail_spool

# This transport is used for local delivery to user mailboxes in traditional
# BSD mailbox format.
#
mail_spool:
  debug_print = "T: appendfile for $local_part@$domain"
  driver = appendfile
  file = /var/mail/$local_part
  delivery_date_add
  envelope_to_add
  return_path_add
  group = mail
  mode = 0660
  mode_fail_narrower = false

Здесь тоже поменять нужно?

Rayman24
() автор топика
Ответ на: комментарий от Rayman24

Здесь тоже поменять нужно?

да

предполагаю, что где-то в конфигах у вас стоит

transport=mail_spool

Давайте не будем трогать этот транспорт, а напишем рядом новый.

ищем в конфигах строчку

begin transports

и ниже пишем новый транспорт:

dovecot_virtual_delivery:
    driver = pipe
    command = /usr/lib/dovecot/dovecot-lda -d $local_part@$domain -f $sender_address
    message_prefix =
    message_suffix =
    delivery_date_add
    envelope_to_add
    return_path_add
    log_output
    user = mail
    # вот я так и не знаю, под каким юзером у вас там работает, но пусть будет mail сейчас
    temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78

затем ищем и с меняем в exim

transport=mail_spool

на

transport = dovecot_virtual_delivery

Таким образом exim перестанет заниматься херней и складывать письма в папки. Он будет отдавать это dovecot. Это правильно и удобно. Dovecot будет рулить размещением письм и отдачей их почтовым клиентам.

constin ★★★★
()
Ответ на: комментарий от anonymous

В логах видно что используется транспорт maildir_home

Да, проглядел. Я почти не использую exim. Но ведь я просил его выложить конфиг exim, а не его кусок с одним транспортом.

Тогда меняем

transport= maildir_home

на

transport = dovecot_virtual_delivery

Впрочем, если у него есть мозг, то он уже догадался.

constin ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.