[Mimedefang] Testing for the existence of a header

Joseph Brennan brennan at columbia.edu
Tue Sep 30 21:36:37 EDT 2008

> Can anyone please tell me how to test for the existence of a header in an
> email?

We've generalized this, because we check several headers.  In
filter, you could do this:

    # In the HEADERS file, any multiline headers have been rewritten to
    # be one line.  Received: is a typical example.  So here we do not
    # need to worry about continuation lines.
    # Where there are multiple headers with the same name, what we do
    # here will overwrite and end up with the data for the last one.
    # If we want to collect them all we make a list like @Received.

    if (open(IN,"<./HEADERS")) {
        while(<IN>) {
            if (/^(\S+): (.*)/) {
                my $label = $1;
                my $data  = $2;
                $label = lc($label);
                $Header{$label} = $data;
                if ($label eq 'received') {

Taking your example, then the contents of a header "X-ABC:" would be
stored in $Header{'x-abc'}.  You could test both existence:

     if ($Header{'x-abc'})

and contents:

     if ($Header{'x-abc'} =~ /some string/)

Joseph Brennan
Lead Email Systems Engineer
Columbia University Information Technology

More information about the MIMEDefang mailing list