|
[ stameni @ 14.08.2024. 18:53 ] @
| Treba da napišem sitan program koji prima i šalje mailove, pa mi je razvoja radi potrebna preporuka za neki jednostavan mail server (pretpostavljam da je obavezno da bude SSL / TLS / štaveć...).
Idelano bi bilo za 32-bitni XP, ali ako ne može, koristiću XAMPP-a na malo jačem OS-u  |
[ djoka_l @ 14.08.2024. 19:04 ] @
Pišeš sa Linux mašine, hoćeš da koristiš XAMPP, a pitaš za mail server na XP-u????
Sendmail na linux mašinu, ništa drugo ti nije potrebno.
[ stameni @ 14.08.2024. 19:29 ] @
Eh, moj vatreni sagovorniče,  situacija je tačno takva kakvom sam je opisao, pa da ne komplikujem: treba mi neko sitno rešenje za Windows XP.
[ savkic @ 14.08.2024. 21:13 ] @
Mail server ili mail klijent? Za server nisam siguran da Delphi ima neko resenje, bolje da uzmes neki gotov program.
Ako je mail klijent onda uglavnom sve komponente imaju neko SMTP/POP3 resenje, i Indy bi trebalo da radi uz openssl.
[ djoka_l @ 14.08.2024. 23:08 ] @
Evo ti jedan C program koji direktno priča sa mail serverom.
Pravio sam ga za Linux na kojem nisam imao baš ništa i nisam mogao ništa ni da dodam (otkačen sa interneta).
Code (c):
/*
**
** Datum: 20023-06-13
**
** Program salje HTML mail sa aplikacionog servera.
** mailx ne radi na produkcionom aplikacionom servru, a direktna konekcija
** na port 25 mail servera radi.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netdb.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define MAIL_SERVER "mail.foo.com"
#define MAIL_PORT 25
#define BUFFER_SIZE 65536
/* Error handling */
void error (const char *msg ) {
perror(msg );
exit(1);
}
/* Send and receive bytes from socket */
void SMTPsend (int sock , const char *line , int waitresponse ) {
char buffer [BUFFER_SIZE ];
int n ;
if (line ) {
printf("%s", line );
n = write (sock , line , strlen(line ));
if (n < 0) error ("ERROR writing to socket");
}
bzero (buffer , BUFFER_SIZE );
if (waitresponse ) {
n = read (sock , buffer , BUFFER_SIZE - 1);
if (n < 0) error ("ERROR reading from socket");
printf("%s", buffer );
}
}
/* Opening socket */
int smtp_connect () {
int sockfd ;
struct sockaddr_in serv_addr ;
struct hostent *server ;
sockfd = socket (AF_INET , SOCK_STREAM , 0);
if (sockfd < 0) error ("ERROR opening socket");
server = gethostbyname (MAIL_SERVER );
if (server == NULL ) error ("ERROR, no such host");
bzero ((char *) &serv_addr , sizeof(serv_addr ));
serv_addr. sin_family = AF_INET ;
bcopy ((char *) server ->h_addr , (char *) &serv_addr. sin_addr. s_addr, server ->h_length );
serv_addr. sin_port = htons (MAIL_PORT );
if (connect (sockfd , (struct sockaddr *) &serv_addr , sizeof(serv_addr )) < 0)
error ("ERROR connecting");
return sockfd ;
}
void usage (const char *name ) {
printf("\n\n\tUsage: \n\n");
printf("\t%s [-s SUBJECT] [-f FILENAME] MAIL_ADDRESS...\n\n", name );
printf("\tProgram sends HTML mail, where the mail body is in the FILENAME.\n");
printf("\tIf FILENAME is omitted, then program reads input from STDIN\n");
printf("\tMandatory parameter is list of email addresses,\n\n\n");
exit(1);
}
int main (int argc , char *argv []) {
char buffer [BUFFER_SIZE ];
int sockfd ;
FILE *input_stream = stdin ;
int opt ;
char *subject = "[No Subject]", *file_name = NULL ;
char *recipients [100];
char *sender = "Some-Sender";
int recipient_count = 0;
while ((opt = getopt (argc , argv , "s:f:")) != -1) {
switch (opt ) {
case 's': /* Subject */
subject = strdup (optarg );
break;
case 'f': /* File name */
file_name = strdup (optarg );
if ((input_stream = fopen(file_name , "r")) == NULL ) {
snprintf(buffer , sizeof(buffer ), "ERROR opening %s\n", file_name );
error (buffer );
}
break;
default:
usage (argv [0]);
}
}
if (optind == argc ) usage (argv [0]);
for (int i = optind ; i < argc ; i ++) {
recipients [recipient_count ] = argv [i ];
recipient_count ++;
}
sockfd = smtp_connect ();
/* Create mail header */
snprintf(buffer , sizeof(buffer ), "From: %s\r\nTo: ", sender );
for (int i = 0; i < recipient_count ; i ++) {
strcat(buffer , recipients [i ]);
if (i < recipient_count - 1) strcat(buffer , ", ");
}
strcat(buffer , "\r\nSubject: ");
strcat(buffer , subject );
strcat(buffer , "\r\nMIME-Version: 1.0\r\nContent-Type: text/html\r\n\r\n");
/* Read mail server greeting */
SMTPsend (sockfd , NULL , 1);
/* Greet mail server with EHLO */
SMTPsend (sockfd , "EHLO\r\n", 1);
/* Send FROM part */
SMTPsend (sockfd , "MAIL FROM:user@localhost\r\n", 1);
/* Send TO part */
for (int i = 0; i < recipient_count ; i ++) {
SMTPsend (sockfd , "RCPT TO:", 0);
SMTPsend (sockfd , recipients [i ], 0);
SMTPsend (sockfd , "\r\n", 1);
}
/* Intro into DATA transmission */
SMTPsend (sockfd , "DATA\r\n", 0);
/* Send actual mail */
SMTPsend (sockfd , buffer , 0);
/* Send email body */
while (fgets(buffer , sizeof(buffer ), input_stream ) != NULL ) {
SMTPsend (sockfd , buffer , 0);
}
/* Finish mail */
SMTPsend (sockfd , "\r\n.\r\nQUIT\r\n", 1);
/* Free allocated memory */
free(subject );
if (file_name ) free(file_name );
return 0;
}
[ Predrag Supurovic @ 16.08.2024. 00:07 ] @
hmailserver
[ stameni @ 17.08.2024. 12:26 ] @
Biće da će mi ovaj serverčić što mi Peđa preporuči odraditi posao  Hvala mnogo!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|