Re: [Dovecot] Dovecot and Bogofilter
Matthias-Christian Ott wrote: Hi, on my small Xen-virtualised server with 48 MiB RAM I use Postfix and Dovecot, because the Debian administrators dislike qmail [1], which is in my opinion despite some maintainability and code quality issues a quite well designed software, because it mostly follows the UNIX principles. Postfix is not able to sort my E-Mail into different Maildir folders postfix can, with the help of other programs. unix principles, you know ;-p postfix can pass mail to any program you want. A wrapper would do something like - pass the message to a filter. - save the filtered message to a temp file - parse the temp file to determine the destination folder - run dovecot deliver with the -m option to specify the destination folder of course, you need to catch errors. maildrop may be a better tool at this job, though. and after I looked at procmail's source code, I decided to use Dovecot's LDA, because it supports sieve via a plugin. All in all it worked after some tweaking and Dovecot is now responsible for authentication and delivery. Furthermore I want to setup a spam filter and due to the memory constraints I decided in favour of bogofilter (I made no real world tests, but the authors claim that it's fast and has a small memory footprint). My first idea was train bogofilter via a cronjob that runs bogofilter for each E-Mail in my spam folder and deletes them afterwards. Then I stumbled upon the dovecot antispam [2] plugin and quickly wrote a backend for bogofilter. During the development I realised that bogofilter has to update the X-Bogosity header of the reclassified E-Mails. Johannes Berg told me that he wasn't sure whether dovecot would be able to do this and recommended to ask this on the mailing list. one possibility would be - deliver the reclassified message - if ok, delete the original one. this means the plugin needs to know the file location. An other problem is that each mail needs to be initially classified and due to the fact that sieve is not able to execute external programmes, deliver has to do this task. I'm currently thinking of possibilities to implement this, so far I came up with the following: 1. Write a generic pipe plugin which can execute an arbitrary number of programmes. The problem with this is that I'm not sure how to integrate this is in Dovecot's configuration file. I thought of something like this: pipe = prg1 | prg2 keep it simple ... if you need to pipe between multiple programs, just use shell wrappers. 2. Write a bogofilter-specific plugin for this. I guess we will end up with a foo-specific plugin, for every possible foo filter. A generic plugin is better even if that means executing shell wrappers. Anyhow I would like to take this opportunity to criticise Dovecot for being a bloated (unnecessary abstractions, verbose, pseudo object-oriented, ...), non-suckless [3] and non-unixish (plugin architecture, monolithic design, ...) software which in return works quite well and stable so far. ot non-unixish? well - plugins are simply loadable libraries. if you think they are windowish, you are wrong. They fit perfectly into the simple pieces of code to do fewtasks philosophy. just because dynamic libs weren't usable a long time ago doesn't mean unix should stick with old stuff. - the unix kernel is monolithic. loadable modules support has been added but the kernel is still a large piece of code. - and before I forget, my favourite provaction: unix is obsolete ;-p /ot I appreciate any suggestions, ideas or criticism. I would really like to finish configuring my mail server as soon as possible. Regards, Matthias-Christian [1] http://smarden.org/pape/Debian/1215531259.4854_332.werc [2] http://johannes.sipsolutions.net/Projects/dovecot-antispam [3] http://www.suckless.org/common/
Re: [Dovecot] Dovecot and Bogofilter
Steffen Kaiser wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On Mon, 10 Nov 2008, Matthias-Christian Ott wrote: If you want something and Dovecot's deliver doesn't fit your needs, consider maildrop, http://www.courier-mta.org/maildrop/ Looks a bit bloated to me. I'm not sure if I missed that part about the shell script, someone suggested. You could use something like: #!/bin/bash bogofilter | dovecot-deliver $@ replacing the orginal dovecot-deliver in the conf. If bogofilter does not support to pipe the message through, there will be other ways. Besides that you have just one additional exec() (the shell) for each delivery and you already inject the modified message to deliver. Or did I misunderstood the problem, and you want the antispam to change the message, when a mail is copied into / out of the SPAM folder via IMAP? Yes, but currently it doesn't matter, because I decided to not use spam filtering at the moment. Mutt just sucks and all this crappy mail software that's still around. I can't see this from a pragmatic point of view anymore, it's so fucked up. It just annoys me, I'll keep my mail server at low traffic and avoid to use all these things. This whole issue just showed me yet another time that UNIX is really dead and forgotten. I have better things to do than just configuring my computers, finding workarounds etc. I wish we could somehow turn the clocks back 30 years and do all this crap right. In my opinion the whole software industry (including the Free Software community which degenerated into a periphery position) is just a bloated bubble that will disastrously collapse at some point of time. I'm yet another time glad that I don't have to work in this business. So I think we can regard this issue as resolved. Sorry for annoying you with my pessimistic opinion about software, but it just bothers that after nearly four centuries of UNIX that nobody can get simple tasks like mail delivery right (Yes, I know there are workarounds, but there are tons of magazines that deal with workarounds for some big proprietary operating system and it's still pain to use it). Bye, - -- Steffen Kaiser Regards, Matthias-Christian
Re: [Dovecot] Dovecot and Bogofilter
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On Mon, 10 Nov 2008, Matthias-Christian Ott wrote: If you want something and Dovecot's deliver doesn't fit your needs, consider maildrop, http://www.courier-mta.org/maildrop/ Looks a bit bloated to me. I'm not sure if I missed that part about the shell script, someone suggested. You could use something like: #!/bin/bash bogofilter | dovecot-deliver $@ replacing the orginal dovecot-deliver in the conf. If bogofilter does not support to pipe the message through, there will be other ways. Besides that you have just one additional exec() (the shell) for each delivery and you already inject the modified message to deliver. Or did I misunderstood the problem, and you want the antispam to change the message, when a mail is copied into / out of the SPAM folder via IMAP? Bye, - -- Steffen Kaiser -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFJGXAGVJMDrex4hCIRAhlvAKCcIA6KcRxhdIj1oPBam/pcWUu3uwCgvw0T sgzJ2i4nzHcxR+UCY591n5w= =xLhH -END PGP SIGNATURE-
Re: [Dovecot] Dovecot and Bogofilter
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Hi Matthias Matthias Andree wrote: On Mon, 10 Nov 2008, Patrick Nagel wrote: The problem with modifying the mail after reclassification persists, hope this can be solved. Then I could also finally move from postfix-procmail-bogofilter-cron-dovecot to postfix-deliver-antispam-bogofilter-dovecot. :) Hi, it's not quite clear to me how this would work with bogofilter as a mailbox_transport - bogofilter isn't designed to do final delivery. It's also not quite clear to me why people would use procmail. Although defended by its maintainers, it's an unusable and unconfigurable piece of software from ancient past -- getting error handling right in procmail is next to impossible, requires forfeiting :e rules and bloating procmailrc with explicit error handling recipes. You're right, and that's why I don't want to continue using it. It had a lot of security issues, and the syntax of procmailrc looked like a bad joke to me when I encountered it for the first time. Not being able to pipe mail through an arbitrary program surely makes sieve more secure, but it also makes things much more complicated sometimes. Also I think beginners tend to use procmail, just because in many guides / tutorials / howtos it's the LDA of choice. (I, for example, started out with this howto: http://www.gentoo-wiki.info/HOWTO_Email_System_for_the_Home_Network ) If you want something and Dovecot's deliver doesn't fit your needs, consider maildrop, http://www.courier-mta.org/maildrop/ I didn't even know about it until very recently. ;) Bogofilter has an integrating-with-postfix document in the doc/ directory that shows how to use Postfix's content_filter and does not need procmail. Unfortunately, it does not show how to integrate updates; there are several approaches to achieve that. One way is to use separate mailboxes where users can send mail to and where they are picked up by cron - best when using Dovecot is probably to make users move spam into particular folders via IMAP. That's how I'm doing it, but surely the Antispam plugin is a nicer (and more user-friendly) approach - the classification direction (Spam-Ham or Ham-Spam) is determined by the source and target mailbox. Patrick. - -- STAR Software (Shanghai) Co., Ltd. http://www.star-group.net/ Phone:+86 (21) 3462 7688 x 826 Fax: +86 (21) 3462 7779 PGP key: E883A005 https://stshacom1.star-china.net/keys/patrick_nagel.asc Fingerprint: E09A D65E 855F B334 E5C3 5386 EF23 20FC E883 A005 -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.7 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org iD8DBQFJF/pB7yMg/OiDoAURAmNyAJ9rFGEPU/mylzF9ec+I07sfMo2q6QCgnGbQ j4SQHfYXV3zt7FNVXDMA+YE= =qeP/ -END PGP SIGNATURE-
Re: [Dovecot] Dovecot and Bogofilter
On Mon, 10 Nov 2008, Patrick Nagel wrote: Thorsten Vollmer wrote: On Sun, 2008-11-09 at 22:39 +0100, Matthias-Christian Ott wrote: An other problem is that each mail needs to be initially classified and due to the fact that sieve is not able to execute external programmes, deliver has to do this task. I'm currently thinking of possibilities to implement this, so far I came up with the following: 1. Write a generic pipe plugin which can execute an arbitrary number of programmes. The problem with this is that I'm not sure how to integrate this is in Dovecot's configuration file. I thought of something like this: pipe = prg1 | prg2 You do not need a plugin if you do the classification before the delivery: MTA | classification | LDA With postfix, just add bogofilter as transport to master.cf and make it the 'mailbox_transport'. The problem with modifying the mail after reclassification persists, hope this can be solved. Then I could also finally move from postfix-procmail-bogofilter-cron-dovecot to postfix-deliver-antispam-bogofilter-dovecot. :) Hi, it's not quite clear to me how this would work with bogofilter as a mailbox_transport - bogofilter isn't designed to do final delivery. It's also not quite clear to me why people would use procmail. Although defended by its maintainers, it's an unusable and unconfigurable piece of software from ancient past -- getting error handling right in procmail is next to impossible, requires forfeiting :e rules and bloating procmailrc with explicit error handling recipes. If you want something and Dovecot's deliver doesn't fit your needs, consider maildrop, http://www.courier-mta.org/maildrop/ Bogofilter has an integrating-with-postfix document in the doc/ directory that shows how to use Postfix's content_filter and does not need procmail. Unfortunately, it does not show how to integrate updates; there are several approaches to achieve that. One way is to use separate mailboxes where users can send mail to and where they are picked up by cron - best when using Dovecot is probably to make users move spam into particular folders via IMAP. I'm happy to update or add instructions to bogofilter, but may not have the time to do sufficient RD myself in the near future to obtain relevant knowledge that I could document myself. -- Matthias Andree
Re: [Dovecot] Dovecot and Bogofilter
On Mon, 10 Nov 2008, Patrick Nagel wrote: Matthias-Christian Ott wrote: Patrick Nagel wrote: With postfix, just add bogofilter as transport to master.cf and make it the 'mailbox_transport'. Does Postfix understand the pipe syntax? If so everything would be fine. Umm, well, it pipes the mail through the command specified as 'mail_transport' - don't know if that works with shell script style pipes (|) directly - but in any case you could easily create a wrapper shell script. Postfix's pipe(8) transport runs the command directly rather than spawning /bin/sh; so it does not support shell expansions such as pipes. -- Matthias Andree
Re: [Dovecot] Dovecot and Bogofilter
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Matthias-Christian Ott wrote: Patrick Nagel wrote: With postfix, just add bogofilter as transport to master.cf and make it the 'mailbox_transport'. Does Postfix understand the pipe syntax? If so everything would be fine. Umm, well, it pipes the mail through the command specified as 'mail_transport' - don't know if that works with shell script style pipes (|) directly - but in any case you could easily create a wrapper shell script. Patrick. - -- STAR Software (Shanghai) Co., Ltd. http://www.star-group.net/ Phone:+86 (21) 3462 7688 x 826 Fax: +86 (21) 3462 7779 PGP key: E883A005 https://stshacom1.star-china.net/keys/patrick_nagel.asc Fingerprint: E09A D65E 855F B334 E5C3 5386 EF23 20FC E883 A005 -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.7 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org iD8DBQFJF/TX7yMg/OiDoAURArRMAJ98wma7/pjbcS7bcUCV1DqMBszUSQCgl4ay GxESbmr50vW8/OMyZGXqjqY= =g2O6 -END PGP SIGNATURE-
Re: [Dovecot] Dovecot and Bogofilter
Matthias Andree wrote: On Mon, 10 Nov 2008, Patrick Nagel wrote: Thorsten Vollmer wrote: On Sun, 2008-11-09 at 22:39 +0100, Matthias-Christian Ott wrote: An other problem is that each mail needs to be initially classified and due to the fact that sieve is not able to execute external programmes, deliver has to do this task. I'm currently thinking of possibilities to implement this, so far I came up with the following: 1. Write a generic pipe plugin which can execute an arbitrary number of programmes. The problem with this is that I'm not sure how to integrate this is in Dovecot's configuration file. I thought of something like this: pipe = prg1 | prg2 You do not need a plugin if you do the classification before the delivery: MTA | classification | LDA With postfix, just add bogofilter as transport to master.cf and make it the 'mailbox_transport'. The problem with modifying the mail after reclassification persists, hope this can be solved. Then I could also finally move from postfix-procmail-bogofilter-cron-dovecot to postfix-deliver-antispam-bogofilter-dovecot. :) Hi, it's not quite clear to me how this would work with bogofilter as a mailbox_transport - bogofilter isn't designed to do final delivery. It's also not quite clear to me why people would use procmail. Although defended by its maintainers, it's an unusable and unconfigurable piece of software from ancient past -- getting error handling right in procmail is next to impossible, requires forfeiting :e rules and bloating procmailrc with explicit error handling recipes. If you haven't puked today, just look at their source code and programming style. I think the configuration and exit code handling is not the worst problem in this software. If you want something and Dovecot's deliver doesn't fit your needs, consider maildrop, http://www.courier-mta.org/maildrop/ Looks a bit bloated to me. Bogofilter has an integrating-with-postfix document in the doc/ directory that shows how to use Postfix's content_filter and does not need procmail. Unfortunately, it does not show how to integrate updates; there are several approaches to achieve that. One way is to use separate mailboxes where users can send mail to and where they are picked up by cron - best when using Dovecot is probably to make users move spam into particular folders via IMAP. I read that document some days ago, but the content_filter approach looks strange to me, because they use sendmail to reinject the E-Mail in the queue. Regards, Matthias-Christian
Re: [Dovecot] Dovecot and Bogofilter
Patrick Nagel wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Hi Matthias Matthias Andree wrote: On Mon, 10 Nov 2008, Patrick Nagel wrote: The problem with modifying the mail after reclassification persists, hope this can be solved. Then I could also finally move from postfix-procmail-bogofilter-cron-dovecot to postfix-deliver-antispam-bogofilter-dovecot. :) Hi, it's not quite clear to me how this would work with bogofilter as a mailbox_transport - bogofilter isn't designed to do final delivery. It's also not quite clear to me why people would use procmail. Although defended by its maintainers, it's an unusable and unconfigurable piece of software from ancient past -- getting error handling right in procmail is next to impossible, requires forfeiting :e rules and bloating procmailrc with explicit error handling recipes. You're right, and that's why I don't want to continue using it. It had a lot of security issues, and the syntax of procmailrc looked like a bad joke to me when I encountered it for the first time. I think the syntax is not that worse if got a bit used to it. Even this exitcode issues are just a matter of standardisation. But look at this (taken from procmail.c): [...] int main(argc,argv)int argc;const char*const argv[]; { register char*chp,*chp2; #if 0 /* enable this if you want to trace procmail */ kill(getpid(),SIGSTOP);/*raise(SIGSTOP);*/ #endif newid(); ;{ int presenviron,override;char*fromwhom=0; const char*idhint=0;gid_t egid=getegid(); presenviron=Deliverymode=mailfilter=override=0; Openlog(procmailn,LOG_PID,LOG_MAIL); /* for the syslogd */ if(argc) /* sanity check, any argument at all? */ { Deliverymode=!!strncmp(lastdirsep(argv0=argv[0]),procmailn, STRLEN(procmailn)); [...] The whole source code looks like this. I mean, who is supposed to read this and who wrote this? I don't want to use such software, it's a nightmare. Not being able to pipe mail through an arbitrary program surely makes sieve more secure, but it also makes things much more complicated sometimes. Also I think beginners tend to use procmail, just because in many guides / tutorials / howtos it's the LDA of choice. (I, for example, started out with this howto: http://www.gentoo-wiki.info/HOWTO_Email_System_for_the_Home_Network ) If you want something and Dovecot's deliver doesn't fit your needs, consider maildrop, http://www.courier-mta.org/maildrop/ I didn't even know about it until very recently. ;) $ aptitude search ~dprocmail [...] p maildrop - mail delivery agent with filtering abilities [...] That's how I found it ;). Bogofilter has an integrating-with-postfix document in the doc/ directory that shows how to use Postfix's content_filter and does not need procmail. Unfortunately, it does not show how to integrate updates; there are several approaches to achieve that. One way is to use separate mailboxes where users can send mail to and where they are picked up by cron - best when using Dovecot is probably to make users move spam into particular folders via IMAP. That's how I'm doing it, but surely the Antispam plugin is a nicer (and more user-friendly) approach - the classification direction (Spam-Ham or Ham-Spam) is determined by the source and target mailbox. You could simply run the cron on your SPAM folder and also delete old spam mail during that run. That's how I initially planned it. Patrick. Regards, Matthias-Christian
Re: [Dovecot] Dovecot and Bogofilter
On Mon, 10 Nov 2008, Matthias-Christian Ott wrote: it's not quite clear to me how this would work with bogofilter as a mailbox_transport - bogofilter isn't designed to do final delivery. It's also not quite clear to me why people would use procmail. Although defended by its maintainers, it's an unusable and unconfigurable piece of software from ancient past -- getting error handling right in procmail is next to impossible, requires forfeiting :e rules and bloating procmailrc with explicit error handling recipes. If you haven't puked today, just look at their source code and programming style. I think the configuration and exit code handling is not the worst problem in this software. I know that I don't want to read that code. It looks like something in between a dirty C tricks to squeeze the final cycle from compilers that predate even peephole optimization and a submission to obfuscated C contest. User interface? Fallthrough behaviour on delivery errors? Nevermind how randomly mail is spread across your mailboxen :-) If you want something and Dovecot's deliver doesn't fit your needs, consider maildrop, http://www.courier-mta.org/maildrop/ Looks a bit bloated to me. Nevermind the bloated build, it works like a charm and has a rather concise source (if you read a bit of C++, that is). Bogofilter has an integrating-with-postfix document in the doc/ directory that shows how to use Postfix's content_filter and does not need procmail. Unfortunately, it does not show how to integrate updates; there are several approaches to achieve that. One way is to use separate mailboxes where users can send mail to and where they are picked up by cron - best when using Dovecot is probably to make users move spam into particular folders via IMAP. I read that document some days ago, but the content_filter approach looks strange to me, because they use sendmail to reinject the E-Mail in the queue. Well, I co-authored that document, but it's just a refined version of the Simple Content Filter as per Postfix's FILTER_README... check http://www.postfix.org/FILTER_README.html#simple_filter Postfix's content_filter=... setting diverts the mail from regular routing, and the sendmail command (without -t!) reinjects with original headers and recipients (from envelope) for then regular routing. Looks scary to some, but works. BTDT, although I've moved on to amavisd-new since. Saves the hassle of training spamfilters with virucide fodder... -- Matthias Andree
[Dovecot] Dovecot and Bogofilter
Hi, on my small Xen-virtualised server with 48 MiB RAM I use Postfix and Dovecot, because the Debian administrators dislike qmail [1], which is in my opinion despite some maintainability and code quality issues a quite well designed software, because it mostly follows the UNIX principles. Postfix is not able to sort my E-Mail into different Maildir folders and after I looked at procmail's source code, I decided to use Dovecot's LDA, because it supports sieve via a plugin. All in all it worked after some tweaking and Dovecot is now responsible for authentication and delivery. Furthermore I want to setup a spam filter and due to the memory constraints I decided in favour of bogofilter (I made no real world tests, but the authors claim that it's fast and has a small memory footprint). My first idea was train bogofilter via a cronjob that runs bogofilter for each E-Mail in my spam folder and deletes them afterwards. Then I stumbled upon the dovecot antispam [2] plugin and quickly wrote a backend for bogofilter. During the development I realised that bogofilter has to update the X-Bogosity header of the reclassified E-Mails. Johannes Berg told me that he wasn't sure whether dovecot would be able to do this and recommended to ask this on the mailing list. An other problem is that each mail needs to be initially classified and due to the fact that sieve is not able to execute external programmes, deliver has to do this task. I'm currently thinking of possibilities to implement this, so far I came up with the following: 1. Write a generic pipe plugin which can execute an arbitrary number of programmes. The problem with this is that I'm not sure how to integrate this is in Dovecot's configuration file. I thought of something like this: pipe = prg1 | prg2 2. Write a bogofilter-specific plugin for this. Anyhow I would like to take this opportunity to criticise Dovecot for being a bloated (unnecessary abstractions, verbose, pseudo object-oriented, ...), non-suckless [3] and non-unixish (plugin architecture, monolithic design, ...) software which in return works quite well and stable so far. I appreciate any suggestions, ideas or criticism. I would really like to finish configuring my mail server as soon as possible. Regards, Matthias-Christian [1] http://smarden.org/pape/Debian/1215531259.4854_332.werc [2] http://johannes.sipsolutions.net/Projects/dovecot-antispam [3] http://www.suckless.org/common/
Re: [Dovecot] Dovecot and Bogofilter
On Sun, 2008-11-09 at 22:39 +0100, Matthias-Christian Ott wrote: An other problem is that each mail needs to be initially classified and due to the fact that sieve is not able to execute external programmes, deliver has to do this task. I'm currently thinking of possibilities to implement this, so far I came up with the following: 1. Write a generic pipe plugin which can execute an arbitrary number of programmes. The problem with this is that I'm not sure how to integrate this is in Dovecot's configuration file. I thought of something like this: pipe = prg1 | prg2 You do not need a plugin if you do the classification before the delivery: MTA | classification | LDA Would that be an option? Regards, Thorsten signature.asc Description: This is a digitally signed message part
Re: [Dovecot] Dovecot and Bogofilter
Patrick Nagel wrote: Thorsten Vollmer wrote: On Sun, 2008-11-09 at 22:39 +0100, Matthias-Christian Ott wrote: An other problem is that each mail needs to be initially classified and due to the fact that sieve is not able to execute external programmes, deliver has to do this task. I'm currently thinking of possibilities to implement this, so far I came up with the following: 1. Write a generic pipe plugin which can execute an arbitrary number of programmes. The problem with this is that I'm not sure how to integrate this is in Dovecot's configuration file. I thought of something like this: pipe = prg1 | prg2 You do not need a plugin if you do the classification before the delivery: MTA | classification | LDA With postfix, just add bogofilter as transport to master.cf and make it the 'mailbox_transport'. Does Postfix understand the pipe syntax? If so everything would be fine. Regards, Matthias-Christian
Re: [Dovecot] Dovecot and Bogofilter
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Thorsten Vollmer wrote: On Sun, 2008-11-09 at 22:39 +0100, Matthias-Christian Ott wrote: An other problem is that each mail needs to be initially classified and due to the fact that sieve is not able to execute external programmes, deliver has to do this task. I'm currently thinking of possibilities to implement this, so far I came up with the following: 1. Write a generic pipe plugin which can execute an arbitrary number of programmes. The problem with this is that I'm not sure how to integrate this is in Dovecot's configuration file. I thought of something like this: pipe = prg1 | prg2 You do not need a plugin if you do the classification before the delivery: MTA | classification | LDA With postfix, just add bogofilter as transport to master.cf and make it the 'mailbox_transport'. The problem with modifying the mail after reclassification persists, hope this can be solved. Then I could also finally move from postfix-procmail-bogofilter-cron-dovecot to postfix-deliver-antispam-bogofilter-dovecot. :) Patrick. - -- STAR Software (Shanghai) Co., Ltd. http://www.star-group.net/ Phone:+86 (21) 3462 7688 x 826 Fax: +86 (21) 3462 7779 PGP key: E883A005 https://stshacom1.star-china.net/keys/patrick_nagel.asc Fingerprint: E09A D65E 855F B334 E5C3 5386 EF23 20FC E883 A005 -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.7 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org iD8DBQFJF5Rh7yMg/OiDoAURAkE4AJ4zYh/J4WKCsN/xwGGKA66N3sKNQwCeNDrh prjS37amcH+vDH1kwyqyDxY= =f9Rm -END PGP SIGNATURE-