Sendmail Extended Queue Groups

This is an extension to existing queuegroup feature in Sendmail 8.12 versions. This new feature, called queuegroupx, provides extended queuegroups in Sendmail 8.12.

Download queuegroupx.m4

For securing permissions and generating database maps, you can download into /etc/mail and use my build script.

No need to make any changes to site.config.m4 inside sendmail-8.12.x/devtools/Site

For illustration purposes,

About queuegroupx feature

I added additional rules to queuegroup feature and its called queuegroupx
(extended queuegroups feature).

What is it ?

A feature that allows you to specify different queuegroups for different emails
when sendmail queues emails for delivering. You can choose what queuegroup to use
depending on

  1. sender domain,
  2. sender email address,
  3. recipient domain,
  4. recipient email address
  5. sender email address if email addressed to a specific recipient email address

How to use it?

  1. In your .mc file, first include FEATURE(access_db)
  2. Then include queuegroupx as follows

    FEATURE(queuegroupx)

    OR

    FEATURE(queuegroupx,`defaultqg')

    where defaultqg queuegroup will be used if no matching queuegroup found in access file

  3. Create entries in access file (Notice null sender specified as <>)

    IMPORTANT: recipient domain should NOT be in local-host-names. Otherwise,
    it will be just ignored. If you want to have a queuegroup for $=w names , i.e.,
    local host names, use mailer definition for local mailer instead of creating queuegroup in access file

    QFTO:[email protected]<@>[email protected] qg1
    QFTO:<><@>[email protected] qg2
    QFRM:[email protected] qg3
    QFRM:senderdomain2.com qg4
    QFRM:<> qg5
    QGRP:[email protected] qg6
    QGRP:recipientdomain3.com qg
    ..........
  4. Compile and test
    sendmail -d21.4 -bt -Cyournewconfig.cf

    Call debugging ruleset queuegroupd for debugging purposes. See an example session below:

    [email protected] [~] $ sendmail -d21.4 -bt -Csendmail-new.cf
    ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
    Enter <ruleset> <address>
    > queuegroupd [email protected] $| [email protected]
    queuegroupd input: sender @ senderdomain . com $| rec @ recipientdomain . com
    rewritten as: sender @ senderdomain . com $| rec @ recipientdomain . com
    queuegroup1 input: sender @ senderdomain . com $| rec @ recipientdomain . com
    rewritten as: sender @ senderdomain . com $| rec @ recipientdomain . com
    queuegroup2 input: sender @ senderdomain . com $| rec @ recipientdomain . com
    SearchList input: < ! qfrm > $| < F : sender @ senderdomain . com > < D : senderdomain . com > < >
    F input: < sender @ senderdomain . com > < ? > < ! qfrm > < >
    rewritten as: < ? > < sender @ senderdomain . com > < ? > < ! qfrm > < >
    rewritten as: < ? > < >
    F returns: < ? > < >
    rewritten as: < ! qfrm > $| < D : senderdomain . com > < > $| < ? > < >
    SearchList input: < ! qfrm > $| < D : senderdomain . com > < >
    D input: < senderdomain . com > < ? > < ! qfrm > < >
    rewritten as: < ? > < senderdomain . com > < ? > < ! qfrm > < >
    rewritten as: < ? > < senderdomain . com > < ? > < ! qfrm > < >
    D input: < com > < ? > < ! qfrm > < >
    rewritten as: < ? > < com > < ? > < ! qfrm > < >
    rewritten as: < ? > < >
    D returns: < ? > < >
    rewritten as: < ? > < >
    D returns: < ? > < >
    rewritten as: < ! qfrm > $| < > $| < ? > < >
    rewritten as: < ? >
    SearchList returns: < ? >
    rewritten as: < ? >
    SearchList returns: < ? >
    rewritten as: rec @ recipientdomain . com $| < ? >
    queuegroup4 input: rec @ recipientdomain . com
    SearchList input: < ! qgrp > $| < F : rec @ recipientdomain . com > < D : recipientdomain . com > < >
    F input: < rec @ recipientdomain . com > < ? > < ! qgrp > < >
    rewritten as: < ? > < rec @ recipientdomain . com > < ? > < ! qgrp > < >
    rewritten as: < ? > < >
    F returns: < ? > < >
    rewritten as: < ! qgrp > $| < D : recipientdomain . com > < > $| < ? > < >
    SearchList input: < ! qgrp > $| < D : recipientdomain . com > < >
    D input: < recipientdomain . com > < ? > < ! qgrp > < >
    rewritten as: < ? > < recipientdomain . com > < ? > < ! qgrp > < >
    rewritten as: < ? > < recipientdomain . com > < ? > < ! qgrp > < >
    D input: < com > < ? > < ! qgrp > < >
    rewritten as: < ? > < com > < ? > < ! qgrp > < >
    rewritten as: < ? > < >
    D returns: < ? > < >
    rewritten as: < ? > < >
    D returns: < ? > < >
    rewritten as: < ! qgrp > $| < > $| < ? > < >
    rewritten as: < ? >
    SearchList returns: < ? >
    rewritten as: < ? >
    SearchList returns: < ? >
    rewritten as: < ? >
    rewritten as: $# default
    queuegroup4 returns: $# default
    rewritten as: $# default
    queuegroup2 returns: $# default
    rewritten as: $# default
    queuegroup1 returns: $# default
    rewritten as: $# default
    queuegroupd returns: $# default
    > ^D
    [email protected] [~] $

Licence

GNU General Public License.

Disclaimer

No warranty. Use at your own risk.


© Murty Rompalli
All Rights Reserved.