Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Network.DomainAuth.DKIM
Description
A library for DKIM (http://www.ietf.org/rfc/rfc6376.txt). Currently, only receiver side is implemented.
Synopsis
- runDKIM :: Resolver -> Mail -> IO DAResult
- runDKIM' :: Resolver -> Mail -> DKIM -> IO DAResult
- parseDKIM :: RawFieldValue -> Maybe DKIM
- data DKIM
- dkimDomain :: DKIM -> Domain
- dkimSelector :: DKIM -> ByteString
- dkimFieldKey :: CanonFieldKey
Documentation
Authentication with DKIM
runDKIM :: Resolver -> Mail -> IO DAResult Source #
Verifying Mail
with DKIM.
>>>
rs <- makeResolvSeed defaultResolvConf
>>>
:{
let lst = ["DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;" ," d=gmail.com; s=20221208; t=1692239637; x=1692844437;" ," h=to:subject:message-id:date:from:mime-version:from:to:cc:subject" ," :date:message-id:reply-to;" ," bh=g3zLYH4xKxcPrHOD18z9YfpQcnk/GaJedfustWU5uGs=;" ," b=ceWXhAaIcvcQCkqTELkw1Bk7v+0pwT8VjmmE49M2nNhXQqA/DXR/aRljXAxGFIm2eU" ," qhHFwQBh9JHbDWXUpltPWisIEDVI+rgOZFRQ7s9OrhJ4Vfmi+Y9Tu3LqmrzvacjdRM2Z" ," 9RNfk4Wv1xk4jGas+JU0T296Z2BYOR5qxB5X/rmMhPNanKeZDmrhUOk+DWrbC+uJ0wcn" ," P/jb76YBwTKBN1ySRrB0SdbruOIm0kYHYZoNMW/QWsR8f9PGthbAedCZrdjyixb7uXkz" ," YmmGi6+XlLL3czZrj+RRrQlFn/xANIrE7sc0YYkhnehvBM6zZtgqesPflVbTlVEMMQg2" ," N22A==" ,"To: kazu@iij.ad.jp" ,"Subject: test" ,"Message-ID: <CAKipW39HW14nu7NN6xsdnNtu_PakrgeOAXo6agtkm=ScFmXqJQ@mail.gmail.com>" ,"Date: Thu, 17 Aug 2023 11:33:46 +0900" ,"From: Kazu Yamamoto <kazu.yamamoto@gmail.com>" ,"MIME-Version: 1.0" ,"Content-Type: text/plain; charset=\"UTF-8\"" ,"" ,"test" ] mail = getMail $ BS8.intercalate "\r\n" lst in withResolver rs $ \rslv -> runDKIM rslv mail :} pass
runDKIM' :: Resolver -> Mail -> DKIM -> IO DAResult Source #
Verifying Mail
with DKIM. The value of DKIM-Signature:
should be parsed beforehand.
Parsing DKIM-Signature:
parseDKIM :: RawFieldValue -> Maybe DKIM Source #
Parsing DKIM-Signature:.
>>>
:{
let dkim = BS8.concat [ "v=1; a=rsa-sha256; s=brisbane; d=example.com;\n" , " c=relaxed/simple; q=dns/txt; i=joe@football.example.com;\n" , " h=Received : From : To : Subject : Date : Message-ID;\n" , " bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;\n" , " b=AuUoFEfDxTDkHlLXSZEpZj79LICEps6eda7W3deTVFOk4yAUoqOB\n" , " 4nujc7YopdG5dWLSdNg6xNAZpOPr+kHxt1IrE+NahM6L/LbvaHut\n" , " KVdkLLkpVaVVQPzeRDI009SO2Il5Lu7rDNH6mZckBdrIx0orEtZV\n" , " 4bmp/YzhwvcubU4=;" ] in pPrintNoColor $ parseDKIM dkim :} Just ( DKIM { dkimVersion = "1" , dkimSigAlgo = RSA_SHA256 , dkimSignature = "AuUoFEfDxTDkHlLXSZEpZj79LICEps6eda7W3deTVFOk4yAUoqOB4nujc7YopdG5dWLSdNg6xNAZpOPr+kHxt1IrE+NahM6L/LbvaHutKVdkLLkpVaVVQPzeRDI009SO2Il5Lu7rDNH6mZckBdrIx0orEtZV4bmp/YzhwvcubU4=" , dkimBodyHash = "2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=" , dkimHeaderCanon = DKIM_RELAXED , dkimBodyCanon = DKIM_SIMPLE , dkimDomain0 = "example.com" , dkimFields = [ "received" , "from" , "to" , "subject" , "date" , "message-id" ] , dkimLength = Nothing , dkimSelector0 = "brisbane" } )
>>>
:{
let dkim = BS8.concat [ "v=1; a=rsa-sha256; s=brisbane; d=example.com;\n" , " q=dns/txt; i=joe@football.example.com;\n" , " h=Received : From : To : Subject : Date : Message-ID;\n" , " bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;\n" , " b=AuUoFEfDxTDkHlLXSZEpZj79LICEps6eda7W3deTVFOk4yAUoqOB\n" , " 4nujc7YopdG5dWLSdNg6xNAZpOPr+kHxt1IrE+NahM6L/LbvaHut\n" , " KVdkLLkpVaVVQPzeRDI009SO2Il5Lu7rDNH6mZckBdrIx0orEtZV\n" , " 4bmp/YzhwvcubU4=;" ] in pPrintNoColor $ parseDKIM dkim :} Just ( DKIM { dkimVersion = "1" , dkimSigAlgo = RSA_SHA256 , dkimSignature = "AuUoFEfDxTDkHlLXSZEpZj79LICEps6eda7W3deTVFOk4yAUoqOB4nujc7YopdG5dWLSdNg6xNAZpOPr+kHxt1IrE+NahM6L/LbvaHutKVdkLLkpVaVVQPzeRDI009SO2Il5Lu7rDNH6mZckBdrIx0orEtZV4bmp/YzhwvcubU4=" , dkimBodyHash = "2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=" , dkimHeaderCanon = DKIM_SIMPLE , dkimBodyCanon = DKIM_SIMPLE , dkimDomain0 = "example.com" , dkimFields = [ "received" , "from" , "to" , "subject" , "date" , "message-id" ] , dkimLength = Nothing , dkimSelector0 = "brisbane" } )
dkimDomain :: DKIM -> Domain Source #
Getting of the value of the "d" tag in DKIM-Signature:.
dkimSelector :: DKIM -> ByteString Source #
Getting of the value of the "s" tag in DKIM-Signature:.
Field key for DKIM-Signature:
dkimFieldKey :: CanonFieldKey Source #
Canonicalized key for DKIM-Signature:.