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/.
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
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-lda
vpopmail:vpopmail - u mnie user:grupa do poczty (zostało z Qmaila).
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-05-20 21:12:12)
Offline
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