Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundację Dzieciom „Zdążyć z Pomocą”.
Więcej informacji na dug.net.pl/pomagamy/.

#1 2014-05-20 16:52:20

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Filtry w procmail

Próbuję zrobić na serwerze poczty (Postfix) przekierowanie poczty tylko dla określonego adresu.
Na koncie użytkownika tworzę pliki: .forward, .procmailrc
W forward wskazuję scieżkę do procmaila, a w .procmailrc mam:

Kod:

PATH=/usr/bin
MAILDIR=$HOME/Maildir
PMDIR=$MAILDIR
LOGFILE=$PMDIR/procmail.log
LOGABSTRACT=yes
SHELL=/bin/sh

:0:
* ^From.*tk@domena.tld
! user@gmail.com

Niby robi to co ma robić czy forwarduje wiadomość na konto user@gmail.com kiedy znajdzie w nagłówku tk@domena.tld natomiast od innych nie pcha mi do standardowej lokalizacji Maildira (czyli w /home/$USER) tylko do /var/mail/$USER.

Jak zmusić procmaila aby wszystkie wiadomości oprócz tej zaznaczonej w filtrze przekazywał do standardowej skrzynki?
I jak się da czy można forwardować taką wiadomość i jednocześnie zostawić ja na koncie?

Offline

 

#2 2014-05-20 21:10:35

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Filtry w procmail

Ja bym wywalił Procmaila, postawił Dovecota z modułem LDA i Sievie, filtry wtedy możesz wygodnie konfigurować per/pacjent w Webmailu Roundcube (wtyczka Sieverules).

Da się też zapiąć globalne zestawy reguł, obowiązujące dla wszystkich kont.
Dodatkowo zestawy reguł sieve są kompilowane do postaci binarnej, dlatego wyraźnie szybciej to działa, aniżeli Procmail.

Cały konfig dovecota z Sieve, LDA i LMTP (u mnie):

Kod:

# cat /etc/dovecot/dovecot.conf 
# OS: Linux 3.9.9-gr1 x86_64 Gentoo Base System release 2.2 ext4
auth_default_realm = domena.tld
auth_mechanisms = plain login cram-md5 digest-md5
base_dir = /var/run/dovecot/
default_internal_user = vpopmail
default_login_user = vpopmail
first_valid_gid = 89
first_valid_uid = 89
info_log_path = /var/log/dovecot/dovecot.log
last_valid_gid = 89
last_valid_uid = 89
listen = *
log_path = /var/log/dovecot/dovecot-mail.log
login_log_format_elements = pl
mail_gid = 89
mail_location = maildir:/home/domains/%d/%n/.maildir
mail_privileged_group = vpopmail
mail_uid = 89
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave spamtest spamtestplus
passdb {
  args = /etc/dovecot/dovecot-sqlx.conf
  driver = sql
}
plugin {
  autocreate = Sent
  autocreate2 = Drafts
  autocreate3 = Archive
  autocreate4 = Junk
  autocreate5 = Trash
  autocreate6 = Spam
  autosubscribe = Sent
  autosubscribe2 = Drafts
  autosubscribe3 = Archive
  autosubscribe4 = Junk
  autosubscribe5 = Trash
  autosubscribe6 = Spam
  quota = maildir:User quota
  quota_rule2 = Trash:storage=+10%%
  quota_rule3 = Spam:storage=+20%%
  quota_warning = storage=95%% /usr/local/bin/quota-warning.sh 95
  quota_warning2 = storage=80%% /usr/local/bin/quota-warning.sh 80
  sieve = ~/sieve/filtry.sieve
  sieve_after = /etc/dovecot/aftersieve
  sieve_before = /etc/dovecot/sieve
  sieve_dir = ~/sieve
  sieve_extensions = +spamtest +spamtestplus +relational +comparator-i;ascii-numeric
  sieve_global_dir = /etc/dovecot/sieve
}
postmaster_address = postmaster@domena.tld
protocols = imap lmtp sieve pop3
service aggregator {
  fifo_listener replication-notify-fifo {
    user = dovecot
  }
  unix_listener replication-notify {
    user = dovecot
  }
}
service auth-worker {
  user = vpopmail
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-master {
    group = vpopmail
    mode = 0666
    user = vpopmail
  }
  unix_listener auth-userdb {
    group = vpopmail
    mode = 0666
    user = vpopmail
  }
}
service doveadm {
  inet_listener {
    port = 9346
    ssl = yes
  }
}
service imap-login {
  chroot = login
  client_limit = 32
  process_limit = 32
  process_min_avail = 2
  service_count = 1
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0660
    user = postfix
  }
}
service managesieve-login {
  chroot = login
  client_limit = 64
  process_limit = 64
  process_min_avail = 2
  service_count = 1
}
service pop3-login {
  chroot = login
  client_limit = 32
  inet_listener pop3 {
    port = 0
  }
  process_limit = 32
  process_min_avail = 2
  service_count = 1
}
service replicator {
  process_min_avail = 1
  unix_listener replicator-doveadm {
    mode = 0600
  }
}
ssl_cert = </etc/ssl/dovecot/dovecot.pem
ssl_key = </etc/ssl/dovecot/dovecot.key
userdb {
  args = /etc/dovecot/dovecot-sqlx.conf
  driver = sql
}
protocol imap {
  imap_id_log = imapd
  imap_idle_notify_interval = 10 mins
  imap_logout_format = bytes=%i/%o
  imap_max_line_length = 16 k
  mail_plugins = quota autocreate imap_quota
}
protocol pop3 {
  mail_plugins = quota
  pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
  pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
  auth_socket_path = /var/run/dovecot/auth-userdb
  hostname = domena.tld
  info_log_path = /var/log/dovecot/lda-dovecot.log
  lda_mailbox_autocreate = yes
  lda_mailbox_autosubscribe = yes
  lda_original_recipient_header = 
  log_path = /var/log/dovecot/lda-dovecot.log
  mail_plugins = sieve quota autocreate  acl
  postmaster_address = postmaster@domena.tld
  quota_full_tempfail = yes
  rejection_reason = Your message to <%t> was automatically rejected:%n%r
  rejection_subject = Rejected: %s
  sendmail_path = /usr/sbin/sendmail
}
protocol lmtp {
  auth_socket_path = /var/run/dovecot/auth-userdb
  hostname = domena.tld
  info_log_path = /var/log/dovecot/lmtp-dovecot.log
  lda_mailbox_autocreate = yes
  lda_mailbox_autosubscribe = yes
  log_path = /var/log/dovecot/lmtp-dovecot.log
  mail_plugins = sieve quota autocreate  acl
  postmaster_address = postmaster@domena.tld
  quota_full_tempfail = yes
  rejection_reason = Your message to <%t> was automatically rejected:%n%r
  rejection_subject = Rejected: %s
  sendmail_path = /usr/sbin/sendmail
}

Postfix do Doveota leci przez socket LMTP, albo proces dovecot-lda - do wyboru:
Obecnie u mnie:

Kod:

# grep dovecot /etc/postfix/main.cf
# to do LDA
# dovecot_destination_recipient_limit = 1
# local_transport = dovecot

#to już LMTP:
local_transport = lmtp:unix:private/dovecot-lmtp
virtual_transport = lmtp:unix:private/dovecot-lmtp

A tak się puszcza pocztę przez dovecot-lda w master.cf:

Kod:

flags=DRhu user=vpopmail:vpopmail argv=/usr/libexec/dovecot/dovecot-lda -f ${sender} -a ${recipient} -d ${user}@${nexthop}   -o syslog_name=dovecot-lda

vpopmail:vpopmail  - u mnie user:grupa do poczty (zostało z Qmaila).

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2014-05-20 21:12:12)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Online

 

#3 2014-05-20 22:56:49

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Re: Filtry w procmail

Dzięki Jacekalex za sieve ale w porownaniu do configa procmail to tak jakbym strzelał do mrówki z armaty.
Cały mój $HOME/.procmailrc

Kod:

VERBOSE=on
MAILDIR=$HOME/Maildir
LOGFILE=$HOME/procmail.log

:0
* ^From. *user@domena.tld
{
 :0c
 !adres_na_ktory_wyslac@domena.tld
 :0
 $MAILDIR/
}

:0
$MAILDIR/

I w sumie dwa moje pytania załatwiłem tym kodem.

Dodałem jeszcze dwie ostatnie linie i teraz już zachowuje sie ok.

Ostatnio edytowany przez hello_world (2014-05-20 23:36:10)

Offline

 

#4 2018-05-08 11:46:22

anowicki
Nowy użytkownik
Zarejestrowany: 2018-05-08

Re: Filtry w procmail

Zwracam się z prośbą  o pomoc w rekonfiguracji poniższego skryptu. Skrypt poprawnie weryfikuje temat wiadomości, jeżeli temat brzmi test-500 i mieści się w ramach czasowych to wysyła mail'a na wskazane adresy, niestety nie dołącza dodatkowej wiadomości z linii | cat - ; echo "Informacja do maila".
Nie wiem, gdzie popełniłem błąd w tej kwestii.

SHELL=/bin/bash
VERBOSE=off
LOGFILE=/$home/.procmail.log
LOGDATE_=`/bin/date +%Y-%m-%d`

:0
{
:0
{
TIME=`date +%H%M`
ISGT=`expr ${TIME} \> 0700`
ISLT=`expr ${TIME} \< 2330`
}


:0
* ISGT ?? ^^1^^
* ISLT ?? ^^1^^
* ^Subject:.*test-500

{
:0 fhw
| cat - ; echo "Informacja do maila"
:0
! anowicki@szczecin.uw.gov.pl
}

}

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)