Question

On dirait qu'il ya quelques grandes bibliothèques là-bas pour faire DomainKeys la signature des e-mails sur C # /. NET, mais je vais avoir vraiment du mal à trouver le même genre de soutien pour PHP. Peut-être que je ne cherche pas au bon endroit?

Le seul que j'ai trouvé est http://php-dkim.sourceforge.net/ ; il semble incroyablement aki et soutient uniquement PHP4. Considérant la popularité de PHP est, et comment DomainKeys critiques sont pour la classification e-mail comme non-spam, je pense de meilleurs outils; savez-vous de tout? Tous les autres trucs que vous recommanderiez?

Plus d'info:. J'utilise un fournisseur SMTP externe parce que je dois envoyer des milliers d'e-mails par jour

Était-ce utile?

La solution

Je recommande le soutien DKIM au niveau du MTA si tous les messages généré votre serveur pour un domaine donné est signé par défaut. (Sauf si vous avez une très bonne raison de ne pas signer tous les serveurs e-mail généré pour un domaine).

Le meilleur point de départ de mon googler pour obtenir la configuration DKIM LAMP avec DKIM-milter et sendmail (sur CentOS 5.2 dans mon cas) était poste de Jeff Atwood sur l'envoi d'e-mails par le code .

Je suis d'accord avec lui que les 2 premières choses que vous devez faire face sont la Contre-PTR et la signature DKIM.

Il est également très importante:

  1. adresse IP de la boîte pour envoyer un courriel pas déjà mis à l'index.
  2. postmaster@emailsendingdomain.com vous est une boîte de courrier électronique valide
  3. si vos besoins de messagerie générées par le serveur pour semblent venir d'ailleurs (comme un formulaire de contact avoir besoin de venir de nom / email fourni sous une forme) les indications suivantes pour les en-têtes de courrier électronique .

Voici le adresse ip email liste noire vérificateur que je.

Les 5 choses résoudront peut-être 95% de vos e-mails problèmes de délivrabilité.

Guide pour Fedora / dkim-milter / postfix est également très bon.

La bibliothèque PHP mail que j'utilise pour mon application est PHPMailer 5.1 qui supporte DKIM (et PHP 5 uniquement), mais après avoir fait des recherches, je décidais la mise en œuvre au niveau sendmail était une meilleure solution. Comme vous pouvez le voir, même l'auteur de PHPMailer 5.1 ne suggère pas DKIM au niveau de la bibliothèque de messagerie PHP est la meilleure solution http: / /dkim.worxware.com/ .

Bonne chance à vous.

Autres conseils

C'est celui qui a été sur mon radar pendant un certain temps et ne pouvait pas trouver une réponse définitive à la question initiale dans ce fil partout sur le web. Je suis maintenant en mesure de mettre en œuvre l'envoi d'e-mail SMTP signé DKIM avec PHP / PEAR. Voici les étapes nécessaires.

  1. J'ai trouvé une version modifiée du DKIM http://www.ra726.net/blog/2010/07/20/sending-email-to-gmail-from-php-without-being -en-marquée d'Spam / (vous pouvez le télécharger via http: // www. ra726.net/php-dkim.zip ). Si vous avez déjà mis en œuvre et DKIM juste besoin de le faire fonctionner avec le courrier SMP tout ce que vous avez besoin de c'est le fichier dkim.php qui, comme le blog dit, est légèrement modifié pour les en-têtes de poignée passé comme un tableau. Dans mon code, je l'ai nommé dkimNEW.php.

  2. Assurez-vous d'inclure la plupart des têtes de sorte que le MTA ne modifie pas le message après avoir signé. Dans mes recherches limitées, les têtes les plus ajoutés sont les en-têtes de date et d'ID de message, donc mon apparence d'un tableau d'en-tête comme ceci: Note: J'ai utilisé ce pour envoyer un e-mail html, changement complet! De plus, ajoutez votre domaine en tant que la dernière partie du message ID

    $headers = array(
        'Subject' => $subject,
        'From' => $from,
        'To' => $to,
        'MIME-Version' => '1.0',
        'Date' => date('r'),
        'Message-ID' => '<'.sha1(microtime(true)).'@yourdomain.com>',
        'Content-Type' => 'text/html',
        'Content-Transfer-Encoding' => 'quoted-printable',
    ); // end $headers
    
  3. Vous obtiendrez alors d'utiliser le dkim.php modifié mentionné ci-dessus pour signer votre e-mail et ajouter la signature au tableau d'en-têtes, alias

    require 'dkimNEW.php';
    $dkim = AddDKIM($headers, $subject, $body);
    $headers['DKIM-Signature'] = $dkim;
    

Le reste du code est le code normal d'envoyer des courriels via SMTP avec PHP / PEAR. Le code de travail complet est:

<?php
    require_once 'Mail.php';
    require_once 'Mail/mime.php';
  // set all of the parameters
    $subject = 'Test of DKIM';
    $from = 'My Name <myname@mydomain.com>';
    $to = 'First Recipient <recipient1@domain.com>';
    $pbody ='<html><head></head><body><h1>Done! DKIM test</h1>Result, next?</body></html>';
    $text = strip_tags($pbody);

    // create the headers
    $headers = array(
        'Subject' => $subject,
        'From' => $from,
        'To' => $to,
        'MIME-Version' => '1.0',
        'Date' => date('r'),
        'Message-ID' => '<'.sha1(microtime(true)).'@mydomain.com>',
        'Content-Type' => 'text/html',
        'Content-Transfer-Encoding' => 'quoted-printable',
    ); // end $headers


    // create the message
    $mime = new Mail_mime("\n");
    $mime->setTXTBody($text);
    $mime->setHTMLBody($pbody);

    // always call these methods in this order
    $body = $mime->get();
    $headers = $mime->headers($headers);

    require 'dkimNEW.php' ;
    $dkim = AddDKIM($headers, $subject, $body);
    $headers['DKIM-Signature'] = $dkim;

    // create the smtp mail object
    $smtp_params = array(
        'host' => 'mail.mydomain.com',
        'auth' => true,
        'username' => 'myUserName',
        'password' => 'myPassWord',
    ); // end $smtp_params
    $smtp = Mail::factory('smtp', $smtp_params);

    // send the message

    $recipients = array('recipient1@domain.com', 'recipient2@domain.com');
    $mail = $smtp->send($recipients, $headers, $body);

?>

PS. Juste au cas où vous n'avez pas remarqué, remplacer les valeurs avec votre propre!

Par conséquent, tout ce qui est essentiellement nécessaire pour faire DKIM au travail avec le courrier électronique SMTP (ou bien le courrier PHP) est d'assurer que vous spécifiez tous les en-têtes qui sont ajoutés à votre e-mail par votre MTA, connectez-vous alors les en-têtes, sous réserve et le corps du message, et enfin inclure cette partie signée avec votre tête.

Avez-vous essayer: phpMailDomainSigner Elle soutient DKIM-Signature et DomainKey-Signature dans style orienté objet.

Voici quelques exemples:

// Create mailDomainSigner Object
include_once './lib/class.mailDomainSigner.php';

$mds = &new mailDomainSigner($domain_priv,$domain_d,$domain_s);
$new_data = $mds->sign(
                $mail_data,
                "Message-ID:Subject:From:Content-Type:MIME-Version:Content-Transfer-Encoding:Received:To:Date",
                true,true,false);

Une classe uniquement pour DKIM qui est un spin-off de PHPMailer, mais avec des améliorations en ce qui concerne le respect de la RFC et agréable et nettoyer le code:

https://sourceforge.net/projects/dkim-class-php/

Exemple:

include_once('dkim.class.php');
$dkim = new DKIM();
$dkim_header = $dkim -> get_DKIM_header($to, $subject, $message, $headers);
mail($to, $subject, $message, $dkim_header.$headers);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top