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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.


Członek DUG



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:
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







Podobno człowiek...;)








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):
# 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:
# 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:
flags=DRhu user=vpopmail:vpopmail argv=/usr/libexec/dovecot/dovecot-lda -f ${sender} -a ${recipient} -d ${user}@${nexthop} -o syslog_name=dovecot-ldavpopmail:vpopmail - u mnie user:grupa do poczty (zostało z Qmaila).
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-05-20 21:12:12)
Offline


Członek DUG



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
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
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