<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet href="https://dev.horde.org/themes/horde//default/feed-rss.xsl" type="text/xsl"?> 
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 
 <channel> 
  <title>A Postfix policy daemon to manage white/blacklisting</title> 
  <pubDate>Fri, 10 Apr 2026 11:23:03 +0000</pubDate> 
  <link>https://bugs.horde.org/ticket/4904</link> 
  <atom:link rel="self" type="application/rss+xml" title="A Postfix policy daemon to manage white/blacklisting" href="https://bugs.horde.org/ticket/4904/rss" /> 
  <description>A Postfix policy daemon to manage white/blacklisting</description> 
 
   
   
  <item> 
   <title>Postfix can consult an external policy daemon to decide whet</title> 
   <description>Postfix can consult an external policy daemon to decide whether to white/blacklist email.



A daemon which could answer Postfix with an OK or REJECT based on a users black or white lists in ingo would be a very useful addition to horde.



It would allow email to be rejected before it is accepted from a remote smtp server (if you accept email you really should deliver). Or alternatively mail could be accept from a source even if it is listed in for example an rbl (false positives do happen).



More information on Postfix policy daemons can be found here:

http://www.postfix.org/SMTPD_POLICY_README.html</description> 
   <pubDate>Tue, 16 Jan 2007 17:04:09 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/4904#t28535</link> 
  </item> 
   
  <item> 
   <title>In my opinion a daemon is a bit outside the scope of a web a</title> 
   <description>In my opinion a daemon is a bit outside the scope of a web application. I could certainly see interoperating with one, or having one as an affiliated project, but then you need to decide what backend this is for, too. For instance, I doubt it&#039;d make sense to do this with sieve, since sieve should be tied into the MDA anyway. Same, perhaps, for spamassassin. That leaves procmail, maildrop, and imap... I&#039;m just not sure where it fits.</description> 
   <pubDate>Tue, 16 Jan 2007 19:42:20 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/4904#t28558</link> 
  </item> 
   
  <item> 
   <title>I understand your reservations. My main reasoning behind thi</title> 
   <description>I understand your reservations. My main reasoning behind this is to avoid accepting email you are not going to deliver, call me a zealot but I think this is bad.



The daemon should be fairly simple to write, could probably be writen to run from php on the command line and should share a bit of code with Ingo. Reading directly from the horde_prefs table seems to make the most sense. I worry that anything outside of the Horde project would not necessarily be well maintained and would have to duplicate code to de-serialize Horde&#039;s preferences.



The next best alternative to this I can see is it being posible for Ingo to write it&#039;s black/whitelist out to a external database table without serialization. This could be good in that other external apps might be able to refer to this table for the information they require.



I&#039;m willing to put a bounty of $100 on either of these two solutions (not both :o)</description> 
   <pubDate>Wed, 17 Jan 2007 09:47:16 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/4904#t28591</link> 
  </item> 
   
  <item> 
   <title>&gt; The next best alternative to this I can see is it being po</title> 
   <description>&gt; The next best alternative to this I can see is it being posible for 

&gt; Ingo to write it&#039;s black/whitelist out to a external database table 

&gt; without serialization. This could be good in that other external apps 

&gt; might be able to refer to this table for the information they require.



This is already possible with the HEAD code.</description> 
   <pubDate>Wed, 17 Jan 2007 10:17:29 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/4904#t28594</link> 
  </item> 
   
  <item> 
   <title>&gt;&gt; The next best alternative to this I can see is it being p</title> 
   <description>&gt;&gt; The next best alternative to this I can see is it being posible for

&gt;&gt; Ingo to write it&#039;s black/whitelist out to a external database table

&gt;&gt; without serialization. This could be good in that other external apps

&gt;&gt; might be able to refer to this table for the information they require.

&gt;

&gt; This is already possible with the HEAD code.



ok, I may look into hacking something up for personal use with this. Folder rules would need (at least for me) to remain backended into maildrop, I&#039;m not sure if this is an issue (with the code in head).



The bounty remains $100 for a suitable postfix policy daemon. I&#039;d rather it were at least within ingo/scripts, but will be happy to discuss other avenues.</description> 
   <pubDate>Wed, 17 Jan 2007 11:29:20 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/4904#t28601</link> 
  </item> 
   
  <item> 
   <title>I decided to take a look at this as I might be able to use i</title> 
   <description>I decided to take a look at this as I might be able to use it myself. Please give this a look, and if that bounty is still good, I&#039;ll be happy to look at any tweaks, etc.



Note that if your Horde users are different from &quot;username&quot;, where their recipient email address is username@domain, there is a hook that will be called to determine the Horde user to look at whitelist/blacklist rules for: _ingo_hook_smtpd_access_policy_username. This hook should be defined in ingo/config/hooks.php, in a file otherwise just like horde/config/hooks.php.</description> 
   <pubDate>Sun, 12 Aug 2007 18:19:38 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/4904#t35913</link> 
  </item> 
   
  <item> 
   <title>I forgot to specify that this file does indeed live in ingo/</title> 
   <description>I forgot to specify that this file does indeed live in ingo/scripts. I took a shot at the usage instructions in the file header, but I didn&#039;t have a chance to test it yet, so if you do try it and have any tweaks to them, please let me know.</description> 
   <pubDate>Sun, 12 Aug 2007 18:21:21 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/4904#t35916</link> 
  </item> 
   
  <item> 
   <title>I can&#039;t find the script in current cvs head ingo/scripts.


</title> 
   <description>I can&#039;t find the script in current cvs head ingo/scripts.



I&#039;ve solved the problem another way. Using amavis pre-queue and allowing sam to control black/whitelisting. I still feel this is a useful thing for horde to be able to do and will assist in testing.



The bounty is good, email me directly and I will make payment.</description> 
   <pubDate>Mon, 13 Aug 2007 08:33:05 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/4904#t35945</link> 
  </item> 
   
  <item> 
   <title>&gt; I can&#039;t find the script in current cvs head ingo/scripts.
</title> 
   <description>&gt; I can&#039;t find the script in current cvs head ingo/scripts.



I attached it to this ticket for testing/feedback before committing it. It doesn&#039;t require any changes to HEAD ingo.



&gt; I&#039;ve solved the problem another way. Using amavis pre-queue and 

&gt; allowing sam to control black/whitelisting. I still feel this is a 

&gt; useful thing for horde to be able to do and will assist in testing.



Cool, thanks.</description> 
   <pubDate>Mon, 13 Aug 2007 14:19:42 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/4904#t35954</link> 
  </item> 
   
  <item> 
   <title>works as described. Needed a bit of tweaking to run on my sy</title> 
   <description>works as described. Needed a bit of tweaking to run on my system:



here:



&gt;  *    policy  unix  -       n       n       -       -       spawn

&gt;  *      user=nobody argv=/path/to/horde/ingo/scripts/ingo-postfix-policyd



user=apache was required to get read access to horde configs



&gt; $pos = strpos($user, &#039;@&#039;);

&gt;    if ($pos !== false) {

&gt;        $user = substr($user, 0, $pos);

&gt;  }



this probably needs to be configurable (command line arg?), username for us is same as email address.

</description> 
   <pubDate>Tue, 14 Aug 2007 09:43:59 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/4904#t35968</link> 
  </item> 
   
  <item> 
   <title>Thanks for the feedback! I&#039;ve committed the script now to HE</title> 
   <description>Thanks for the feedback! I&#039;ve committed the script now to HEAD, and it&#039;ll be in the next Ingo 1.2 release (probably RC1, but possibly ALPHA-2). I changed the default username from nobody to www-data, and added a note about that user needing to be able to access Horde configs, logfiles, etc.



As to the email address/user problem, I went with bare username by default because, well, it matched my system. But I know this is going to vary for people, which is why I included the hook. If most people&#039;s systems use the full email address, I&#039;m happy to make that the default.



Thanks again.</description> 
   <pubDate>Tue, 14 Aug 2007 18:59:21 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/4904#t35971</link> 
  </item> 
   
   
 
 </channel> 
</rss> 
