Avatar billede elites Nybegynder
10. august 2004 - 13:55 Der er 13 kommentarer

OpenSSL : Digitalt signeret msg fil

Hejsa

Jeg har genereret en digitalt signeret msg fil ved hjælp af OpenSSL.

Min udfordring består nu i at få afsendt denne fil.
Nogen der kender et system, der kan gøre dette eller noget.
Har tænkt på SendMail.org men kender ikke helt så meget til det!

Mvh.
Henrik
Avatar billede arne_v Ekspert
11. august 2004 - 23:45 #1
Øh. Er det ikke bare connecte til en mail server og sende emailen. Uden yderligere
dikkedarer.

C/C++ : Socket til port 25 og RFC 821 og 822 headere

Java/.NET : har API til det samme
Avatar billede elites Nybegynder
16. august 2004 - 14:26 #2
Hvordan kan man evt. gøre det i java..
Eller kan man gøre det i en bat fil.

Mvh. Henrik
Avatar billede arne_v Ekspert
16. august 2004 - 14:33 #3
http://www.eksperten.dk/artikler/77

beskriver hvordan man sender email med Java.
Avatar billede elites Nybegynder
16. august 2004 - 14:45 #4
Den msg fil, der er lavet indeholder jo også noget certificat kode.
Kan man godt bare sende den som var det en almindelig mail. eller hvad?

--- Dette er selve msg filen, der bliver dannet fra OpenSSl

MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="----CFDDEAD7E66D70750D54CD5F8705122C"

This is an S/MIME signed message

------CFDDEAD7E66D70750D54CD5F8705122C
Content-Type: text/plain

This is a text message
------CFDDEAD7E66D70750D54CD5F8705122C
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"

MIIG4wYJKoZIhvcNAQcCoIIG1DCCBtACAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3
DQEHAaCCBRgwggUUMIID/KADAgECAgQ/xLpRMA0GCSqGSIb3DQEBBQUAMDExCzAJ
BgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMB4X
DTA0MDgwNzE5NDU1MFoXDTA2MDgwNzIwMTU1MFoweTELMAkGA1UEBhMCREsxKTAn
BgNVBAoTIEluZ2VuIG9yZ2FuaXNhdG9yaXNrIHRpbGtueXRuaW5nMT8wGAYDVQQD
ExFCZXJpdCBIaW50ZXJlZ2dlcjAjBgNVBAUTHFBJRDo5MjA4LTIwMDItMi0yNTQ2
NTc1MDMxNzIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKHU0GVRBUHv96LW
3wtYs3f5HBXQypMaj3K/JeO+BtspCPavtlhSphsmXLz0ZJNIs5Hh5P80+NpZ2rEc
kSODtHk5W8p2y5k/NHXrPQ+CLsy9TeP3/zmGGay5j0C8A3ksAv23aQg/ZNEwx644
NPkW8a63Xpcdn0/DLRmeQc6/ZzQlAgMBAAGjggJuMIICajAOBgNVHQ8BAf8EBAMC
AzgwggE3BgNVHSAEggEuMIIBKjCCASYGCiqBUIEpAQEBAQEwggEWMC8GCCsGAQUF
BwIBFiNodHRwOi8vd3d3LmNlcnRpZmlrYXQuZGsvcmVwb3NpdG9yeTCB4gYIKwYB
BQUHAgIwgdUwChYDVERDMAMCAQEagcZGb3IgYW52ZW5kZWxzZSBhZiBjZXJ0aWZp
a2F0ZXQgZ+ZsZGVyIE9DRVMgdmlsa+VyLCBDUFMgb2cgT0NFUyBDUCwgZGVyIGth
biBoZW50ZXMgZnJhIHd3dy5jZXJ0aWZpa2F0LmRrL3JlcG9zaXRvcnkuIEJlbeZy
aywgYXQgVERDIGVmdGVyIHZpbGvlcmVuZSBoYXIgZXQgYmVncuZuc2V0IGFuc3Zh
ciBpZnQuIHByb2Zlc3Npb25lbGxlIHBhcnRlci4wJAYDVR0RBB0wG4EZaF9oaW50
ZXJlZ2dlckBob3RtYWlsLmNvbTCBkAYDVR0fBIGIMIGFMEqgSKBGpEQwQjELMAkG
A1UEBhMCREsxDDAKBgNVBAoTA1REQzEUMBIGA1UEAxMLVERDIE9DRVMgQ0ExDzAN
BgNVBAMTBkNSTDM1ODA3oDWgM4YxaHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQu
ZGsvb2Nlcy8xMDY5ODU3MzYxLmNybDAfBgNVHSMEGDAWgBRgtYXsVmR+EhknZx1Q
FUtzrjv5EjAdBgNVHQ4EFgQUIKesVhH+ezcJ1I2W1ensBiNQ0xYwCQYDVR0TBAIw
ADAZBgkqhkiG9n0HQQAEDDAKGwRWNy4wAwIEsDANBgkqhkiG9w0BAQUFAAOCAQEA
X/GHGKCpssc0TnASm1dzwZ1wFxa5MIMxbTihsO5pOpk2HOoqix7bT4Z7zrVb3OMc
2vcZq7yewoxfzA92ALJ4UJxvrW7y72I3GctsYM0VRsU7AVpZTL83DnQeZIVNRV3K
EMjqcthXvTb4j2tNOoLuL03rV+kAdWvF4N8UYr7E6j74nuF7rg2N0fNANfPYA2PN
2MA0SQGlo0jft+WyDyDQs3p17XdJhGxHgHcqCAKEnS5uoi3u2cM1GiNqcokDLbse
4Mws1ZQPICCO5Z/8Ofy5ycXArP02EiUbGtDvKaKu9j2B4giB+WtJc4HsiklnYhW6
qfAFKwIdTrwguybfVD8EEzGCAZMwggGPAgEBMDkwMTELMAkGA1UEBhMCREsxDDAK
BgNVBAoTA1REQzEUMBIGA1UEAxMLVERDIE9DRVMgQ0ECBD/EulEwCQYFKw4DAhoF
AKCBsTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0w
NDA4MDkyMDMyMDBaMCMGCSqGSIb3DQEJBDEWBBTvRHirKerLL+KWdqyyrqg3hDkq
zDBSBgkqhkiG9w0BCQ8xRTBDMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDAN
BggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDANBgkqhkiG9w0B
AQEFAASBgEt8WQyyrifkIbuXjBcB5GL/6RoMNJXj9V0gE11VZx2kJvVEzgHebi+g
6SbCbQMPWAMAsclroc73lk7TCYBaBIQiTcvIVrn6yjfRT6H51sWxTwXmB3CzRo8i
pPlia9ctPKVJMAd5OGY8mwHhA5jhSOM/Ur2VAUjdx/FOSWfSIO0q

------CFDDEAD7E66D70750D54CD5F8705122C--
Avatar billede arne_v Ekspert
16. august 2004 - 14:49 #5
Det er en multipart MIME message.

Hvis du vil sende med et MAIL API skal du nok splitte den op og lade det
pakke det ned igen.

Til rå socket er det bare at skrive RFC 821 og 822 headerne og så hele filen
ud uden nogen former for konvertering.
Avatar billede elites Nybegynder
16. august 2004 - 14:53 #6
Hvor kan jeg læse om det der RFC 821 og de der headere?
Avatar billede arne_v Ekspert
16. august 2004 - 14:56 #8
Her er et lille super simpelt kode eksempel:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#include <sys/socket.h>
#include <fcntl.h>
#include <netdb.h>
#include <errno.h>

void mailsend(char *hostname,char *to,char * from,char *subj,char *body)
{
  int sd,status,tmp;
  char *buf,ownhost[100];
  struct sockaddr local,remote;
  struct hostent *hostinfo;
  /* create socket */
  sd=socket(AF_INET,SOCK_STREAM,0);
  if(sd<0) {
      printf("Error creating socket: %s\n",strerror(errno));
      goto fin;
  }
  /* bind socket */
  local.sa_family=AF_INET;
  memset(local.sa_data,0,sizeof(local.sa_data));
  status=bind(sd,&local,sizeof(local));
  if(status<0) {
      printf("Error binding socket: %s\n",strerror(errno));
      goto fin;
  }
  /* lookup host */
  hostinfo=gethostbyname(hostname);
  if(!hostinfo) {
      printf("Error looking up host: %s\n",hostname);
      goto fin;
  }
  /* connect to host */
  remote.sa_family=hostinfo->h_addrtype;
  memcpy(remote.sa_data+2,hostinfo->h_addr_list[0],hostinfo->h_length);
  *((short *)remote.sa_data)=25;
  tmp=remote.sa_data[0];
  remote.sa_data[0]=remote.sa_data[1];
  remote.sa_data[1]=tmp;
  status=connect(sd,&remote,sizeof(remote));
  if(status!=0) {
      printf("Error connecting to host: %s port: %d\n",hostname,25);
      goto fin;
  }
  /* send email */
  gethostname(ownhost,sizeof(ownhost));
  buf = malloc(2000+strlen(body));
  sprintf(buf,"HELO %s\r\n"
              "MAIL FROM: <%s>\r\n"
              "RCPT TO: <%s>\r\n"
              "DATA\r\n"
              "Return-Path: <%s>\r\n"
              "From: %s\r\n"
              "To: %s\r\n"
              "Subject: %s\r\n"
              "MIME-version: 1.0\r\n"
              "Content-type: text/html; Charset=iso-8859-1\r\n"
              "\r\n"
              "%s\r\n"
              ".\r\n"
              "QUIT\r\n",ownhost,from,to,from,from,to,subj,body);
  status=send(sd,buf,strlen(buf),0);
  if(status<0) {
      printf("Error sending GET request\n");
      goto fin;
  }
  free(buf);
fin:
  close(sd);
  return;
}

int main(int argc,char *argv[])
{
  mailsend("minmailserver", "dig@ditdomain.dk", "mig@mitdomain.dk", "Dette er en test", "<a href='http://www.eksperten.dk/'>E</a>");
  return 0;
}
Avatar billede arne_v Ekspert
16. august 2004 - 14:57 #9
[koden er til LInux - jeg har også en Windows version]

Du skal erstatte fra og med MIME-version til men ikke med det afsluttende
punktum med din fil.
Avatar billede arne_v Ekspert
20. august 2004 - 19:36 #10
OK ?
Avatar billede arne_v Ekspert
28. august 2004 - 19:22 #11
??
Avatar billede arne_v Ekspert
04. september 2004 - 11:47 #12
++
Avatar billede arne_v Ekspert
11. september 2004 - 21:59 #13
##
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester