Skip to content

opendkim.header()

Christopher Mooney edited this page Feb 12, 2018 · 5 revisions

DESCRIPTION

Handle a message header field. opendkim.header() is called zero or more times between opendkim.sign() or opendkim.verify() and opendkim.eoh(), once per message header field.

For more information:
http://www.opendkim.org/libopendkim/dkim_header.html

ARGUMENTS

Type: Object

  • header: The header field being input, including its name, value and separating colon (":") character.
  • length: length of the header value.

RETURN VALUES

  • On failure, an exception is thrown that indicates the cause of the problem.

NOTES

  • The value of header should not contain a trailing CRLF as this will be added by the canonicalization code. However, a CRLF may appear elsewhere in the value if, for example, the header field is meant to be wrapped.
  • A header field whose name includes a semi-colon cannot be used as it will produce a syntactically invalid signature. Such header fields cause this function to return DKIM_STAT_SYNTAX.

EXAMPLE (async/await)

const OpenDKIM = require('node-opendkim');                                                               
                                                                                                         
async function verify(header, body) {                                                                    
  var opendkim = new OpenDKIM();                                                                         
                                                                                                         
  try {                                                                                                  
    await opendkim.verify({id: undefined});                                                              
    await opendkim.header({                                                                              
      header: header,                                                                                    
      length: header.length                                                                              
    });                                                                                                  
    await opendkim.eoh();                                                                                
    await opendkim.body({                                                                                
      body: body,                                                                                        
      length: body.length                                                                                
    });                                                                                                  
    await opendkim.eom();                                                                                
  } catch (err) {                                                                                        
    console.log(opendkim.sig_geterrorstr(opendkim.sig_geterror()));                                     
    console.log(err);                                                                                    
  }                                                                                                      
}                                                                                                        

EXAMPLE (sync)

const OpenDKIM = require('node-opendkim');                                                               
                                                                                                         
function verify_sync(header, body) {                                                                     
  var opendkim = new OpenDKIM();                                                                         
                                                                                                         
  try {                                                                                                  
    opendkim.verify_sync({id: undefined});                                                               
    opendkim.header_sync({                                                                               
      header: header,                                                                                    
      length: header.length                                                                              
    });                                                                                                  
    opendkim.eoh_sync();                                                                                 
    opendkim.body_sync({                                                                                 
      body: body,                                                                                        
      length: body.length                                                                                
    });                                                                                                  
    opendkim.eom_sync();                                                                                 
  } catch (err) {                                                                                        
    console.log(opendkim.sig_geterrorstr(opendkim.sig_geterror()));                                     
    console.log(err);                                                                                    
  }                                                                                                      
}                                                                                                        

EXAMPLE (errback)

const OpenDKIM = require('node-opendkim');                                                               
                                                                                                         
function verify(opendkim, header, body, callback) {                                                                
  opendkim.verify({id: undefined}, function (err, result) {                                              
    if (err) {                                                                                           
      return callback(err, result);                                                                      
    }                                                                                                    
                                                                                                         
    var header_obj = {                                                                                   
      header: header,                                                                                    
      length: header.length                                                                              
    };                                                                                                   
                                                                                                         
    opendkim.header(header_obj, function (err, result) {                                                 
      if (err) {                                                                                         
        return callback(err, result);                                                                    
      }                                                                                                  
                                                                                                         
      opendkim.eoh(function (err, result) {                                                              
        if (err) {                                                                                       
          return callback(err, result);                                                                  
        }                                                                                                
                                                                                                         
        var body_obj = {                                                                                 
          body: body,                                                                                    
          length: body.length                                                                            
        };                                                                                               
                                                                                                         
        opendkim.body(body_obj, function (err, result) {                                                 
          if (err) {                                                                                     
            return callback(err, result);                                                                
          }                                                                                              
                                                                                                         
          opendkim.eom(function (err, result) {                                                          
            if (err) {                                                                                   
              return callback(err, result);                                                              
            }                                                                                            
                                                                                                         
            return callback(err, result);                                                                
        });                                                                                              
      });                                                                                                
    });                                                                                                  
  });                                                                                                    
}                                                                                                        

var opendkim = new OpenDKIM();

verify(opendkim, header, body, function (err, result) {                                                            
  if (err) {                                                                                             
    return console.log(opendkim.sig_geterrorstr(opendkim.sig_geterror()));
  }                                                                                                      
                                                                                                         
  // success                                                                                             
});