# HG changeset patch
# User František Kučera <franta-hg@frantovo.cz>
# Date 1322664989 -3600
# Node ID 0eca162a758c0182f01b6e1217fe4634acea63cf
# Parent  a5c8edf14f8208420e7ab6bbe1423ae717b140c4
Doručenky: přejmenování milteru

diff -r a5c8edf14f82 -r 0eca162a758c doručenky/dorucenky-milter.pl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doručenky/dorucenky-milter.pl	Wed Nov 30 15:56:29 2011 +0100
@@ -0,0 +1,85 @@
+# E-mailové doručenky je dobré dávat do složky s odeslanou poštou,
+# kde se můžou řadit do vláken pod zprávu, ke které patří.
+#
+# Potvrzení o přečtení posílané klientem (Content-Type: multipart/report; report-type=disposition-notification;)
+# obsahují hlavičku References se správným Message-ID, takže to funguje.
+#
+# Ale potvrzení o doručení posílané serverem příjemce (Content-Type: multipart/report; report-type=delivery-status;)
+# tuto hlavičku neobsahují, takže si je klient odesílatele nemůže správně zařadit do vlákna pod odeslanou zprávu.
+#
+# Možná řešení:
+# 1) server příjemce tuto hlavičku bude vyplňovat – ideální, ale nemůžeme ovlivnit
+# 2) na serveru odesílatele původní zprávy (u nás) budeme doplňovat hlavičku References
+#    na základě obsahu přílohy doručenky (text/rfc822-headers), která obsahuje všechny hlavičky 
+#    (včetně potřebného Message-ID) původní odeslané zprávy
+#		a) uděláme to tímto milterem
+#		b) pomocí sieve přesměrujeme doručenky na adresu, kde čeká skript/program (roura), který doplní hlavičku a pošle nám zprávu zpátky
+
+# Tento milter není hotový a pravděpodobně bude lepší řešení b)
+# doručenek je totiž minimum z celkového objemu zpráv, a proto bude lepší přes doplňovač prohnat jen doručenky (filtrované sievem)
+
+# Instalace tohoto milteru:
+#	aptitude install libsendmail-milter-perl
+#	spustit tento skript → vytvoří unixový socket
+#	v postfixu v main.cf nastavit: smtpd_milters = … unix:/dorucenky/dorucenky.sock
+
+# http://search.cpan.org/~cying/Sendmail-Milter-0.18/Milter.pm
+use Sendmail::Milter;
+
+# při jakých akcích bude náš milter volán
+my %my_milter_callbacks =
+(
+	'eoh'	=>	\&my_eoh_callback,
+	'body'	=>	\&my_body_callback,
+	'eom'	=>	\&my_eom_callback,
+	'abort'	=>	\&my_abort_callback,
+);
+
+# konec hlaviček
+sub my_eoh_callback
+{
+	my $ctx = shift;
+	# TODO: zkontrolovat
+	#	zda se jedná o doručenku
+	#	zda už neobsahuje hlavičku References
+	return SMFIS_CONTINUE;
+}
+
+# po každé MIME části
+sub my_body_callback
+{
+	my $ctx = shift;
+	# TODO: načíst Message-ID z části s Content-Type: text/rfc822-headers
+	return SMFIS_CONTINUE;
+}
+
+# konec zprávy
+sub my_eom_callback
+{
+	my $ctx = shift;
+	# TODO: přidat hlavičku References s Message-ID původně odeslané zprávy
+	$ctx->addheader("X-Perl", "byl jsem tu");
+	$ctx->setpriv(undef);
+	return SMFIS_ACCEPT;
+}
+
+# nečekaný konec spojení
+sub my_abort_callback
+{
+	my $ctx = shift;
+	# uklidit po sobě
+	$ctx->setpriv(undef);
+	return SMFIS_CONTINUE;
+}
+
+
+BEGIN:
+{
+	# autokonfiguraci nepoužijeme (to je pro Sendmail)
+	# Sendmail::Milter::auto_setconn("myfilter");
+	
+	Sendmail::Milter::setconn("local:/var/spool/postfix/dorucenky/dorucenky.sock");
+	Sendmail::Milter::register("myfilter", \%my_milter_callbacks, SMFI_CURR_ACTS);
+	Sendmail::Milter::main();
+	# Never reaches here, callbacks are called from Milter.
+}
diff -r a5c8edf14f82 -r 0eca162a758c doručenky/dsn-doručenky-references.pl
--- a/doručenky/dsn-doručenky-references.pl	Wed Nov 30 15:44:34 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-# E-mailové doručenky je dobré dávat do složky s odeslanou poštou,
-# kde se můžou řadit do vláken pod zprávu, ke které patří.
-#
-# Potvrzení o přečtení posílané klientem (Content-Type: multipart/report; report-type=disposition-notification;)
-# obsahují hlavičku References se správným Message-ID, takže to funguje.
-#
-# Ale potvrzení o doručení posílané serverem příjemce (Content-Type: multipart/report; report-type=delivery-status;)
-# tuto hlavičku neobsahují, takže si je klient odesílatele nemůže správně zařadit do vlákna pod odeslanou zprávu.
-#
-# Možná řešení:
-# 1) server příjemce tuto hlavičku bude vyplňovat – ideální, ale nemůžeme ovlivnit
-# 2) na serveru odesílatele původní zprávy (u nás) budeme doplňovat hlavičku References
-#    na základě obsahu přílohy doručenky (text/rfc822-headers), která obsahuje všechny hlavičky 
-#    (včetně potřebného Message-ID) původní odeslané zprávy
-#		a) uděláme to tímto milterem
-#		b) pomocí sieve přesměrujeme doručenky na adresu, kde čeká skript/program (roura), který doplní hlavičku a pošle nám zprávu zpátky
-
-# Tento milter není hotový a pravděpodobně bude lepší řešení b)
-# doručenek je totiž minimum z celkového objemu zpráv, a proto bude lepší přes doplňovač prohnat jen doručenky (filtrované sievem)
-
-# Instalace tohoto milteru:
-#	aptitude install libsendmail-milter-perl
-#	spustit tento skript → vytvoří unixový socket
-#	v postfixu v main.cf nastavit: smtpd_milters = … unix:/dorucenky/dorucenky.sock
-
-# http://search.cpan.org/~cying/Sendmail-Milter-0.18/Milter.pm
-use Sendmail::Milter;
-
-# při jakých akcích bude náš milter volán
-my %my_milter_callbacks =
-(
-	'eoh'	=>	\&my_eoh_callback,
-	'body'	=>	\&my_body_callback,
-	'eom'	=>	\&my_eom_callback,
-	'abort'	=>	\&my_abort_callback,
-);
-
-# konec hlaviček
-sub my_eoh_callback
-{
-	my $ctx = shift;
-	# TODO: zkontrolovat
-	#	zda se jedná o doručenku
-	#	zda už neobsahuje hlavičku References
-	return SMFIS_CONTINUE;
-}
-
-# po každé MIME části
-sub my_body_callback
-{
-	my $ctx = shift;
-	# TODO: načíst Message-ID z části s Content-Type: text/rfc822-headers
-	return SMFIS_CONTINUE;
-}
-
-# konec zprávy
-sub my_eom_callback
-{
-	my $ctx = shift;
-	# TODO: přidat hlavičku References s Message-ID původně odeslané zprávy
-	$ctx->addheader("X-Perl", "byl jsem tu");
-	$ctx->setpriv(undef);
-	return SMFIS_ACCEPT;
-}
-
-# nečekaný konec spojení
-sub my_abort_callback
-{
-	my $ctx = shift;
-	# uklidit po sobě
-	$ctx->setpriv(undef);
-	return SMFIS_CONTINUE;
-}
-
-
-BEGIN:
-{
-	# autokonfiguraci nepoužijeme (to je pro Sendmail)
-	# Sendmail::Milter::auto_setconn("myfilter");
-	
-	Sendmail::Milter::setconn("local:/var/spool/postfix/dorucenky/dorucenky.sock");
-	Sendmail::Milter::register("myfilter", \%my_milter_callbacks, SMFI_CURR_ACTS);
-	Sendmail::Milter::main();
-	# Never reaches here, callbacks are called from Milter.
-}