554 SMTP erreur de synchronisation avec exim4 et mon code

J'ai la tête la première dans cette erreur de refuser de exim4:

2010-02-15 01:46:05 protocole SMTP erreur de synchronisation (entrée envoyé sans attendre de voeux): rejeté la connexion à partir de H=ender [192.168.20.49 d'entrée]="HELO 192.168.20.49\r\n"

J'ai modifié mon exim4 config pour ne pas appliquer de synchronisation, comme suit:

 smtp_enforce_sync='false'
 acl_smtp_connect = nosync nosync:
         control = no_enforce_sync
         accept

Mais qui ne semble pas à la matière. Ce qui fait moins de sens pour moi, c'est pourquoi je me fais de l'554 en premier lieu. J'ai envoyer un HELO, j'attends une réponse, et d'une certaine manière, au milieu de cette, j'ai réussi à générer le "554 Erreur"

Ce que je fais mal dans le code ci-dessous, ce qui en fait l'échec de 99% du temps (oui, il a travaillé à deux reprises). Oui, le socket est le blocage, je m'accroche dans recv pour ~5 secondes d'attente pour le rejet. Sur les 2 fois où il a travaillé, il n'a pas de pause.

J'ai essayé d'envoyer EHLO au lieu de HELO, pas plus de chance. J'ai même eu le chagrin d'obtenir une session telnet pour se connecter et HELO. Cependant, je peux utiliser python smtp (à partir d'une autre machine) pour envoyer des e-mails juste d'amende contre ce même serveur!

        hSocket = _connectServerSocket(server, port);    
    if (hSocket != INVALID_SOCKET) {        
        BYTE        sReceiveBuffer[4096];
        int            iLength = 0;
        int            iEnd = 0;
        char        buf[4096];

        strcpy(buf, "HELO ");
        strcat(buf, "192.168.20.49");
        strcat(buf, "\r\n");
        printf("%s", buf);
        if (send(hSocket, (LPSTR)buf, strlen(buf), NO_FLAGS) == SOCKET_ERROR) {
            printf("Socket send error: %d\r\n", WSAGetLastError());    
            return (false);
        }
        iLength = recv(hSocket, 
                       (LPSTR)sReceiveBuffer+iEnd,sizeof(sReceiveBuffer)-iEnd, 
                        NO_FLAGS);
        iEnd += iLength;
        sReceiveBuffer[iEnd] = '
        hSocket = _connectServerSocket(server, port);    
if (hSocket != INVALID_SOCKET) {        
BYTE        sReceiveBuffer[4096];
int            iLength = 0;
int            iEnd = 0;
char        buf[4096];
strcpy(buf, "HELO ");
strcat(buf, "192.168.20.49");
strcat(buf, "\r\n");
printf("%s", buf);
if (send(hSocket, (LPSTR)buf, strlen(buf), NO_FLAGS) == SOCKET_ERROR) {
printf("Socket send error: %d\r\n", WSAGetLastError());    
return (false);
}
iLength = recv(hSocket, 
(LPSTR)sReceiveBuffer+iEnd,sizeof(sReceiveBuffer)-iEnd, 
NO_FLAGS);
iEnd += iLength;
sReceiveBuffer[iEnd] = '\0';
';
InformationsquelleAutor boatcoder | 2010-02-15