Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Mali mail server

[es] :: Pascal / Delphi / Kylix :: Mali mail server

[ Pregleda: 826 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

stameni
Ivan Stamenković

Član broj: 6739
Poruke: 550



+9 Profil

icon Mali mail server14.08.2024. u 18:53 - pre 8 meseci
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
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3569

Jabber: djoka_l


+1527 Profil

icon Re: Mali mail server14.08.2024. u 19:04 - pre 8 meseci
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.
 
Odgovor na temu

stameni
Ivan Stamenković

Član broj: 6739
Poruke: 550



+9 Profil

icon Re: Mali mail server14.08.2024. u 19:29 - pre 8 meseci
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.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2743



+99 Profil

icon Re: Mali mail server14.08.2024. u 21:13 - pre 8 meseci
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.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3569

Jabber: djoka_l


+1527 Profil

icon Re: Mali mail server14.08.2024. u 23:08 - pre 8 meseci
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;
}

 
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6340

Sajt: pedja.supurovic.net


+1585 Profil

icon Re: Mali mail server16.08.2024. u 00:07 - pre 8 meseci
hmailserver

 
Odgovor na temu

stameni
Ivan Stamenković

Član broj: 6739
Poruke: 550



+9 Profil

icon Re: Mali mail server17.08.2024. u 12:26 - pre 8 meseci
Citat:
Predrag Supurovic: hmailserver


Biće da će mi ovaj serverčić što mi Peđa preporuči odraditi posao Hvala mnogo!
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Mali mail server

[ Pregleda: 826 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.