• nginx w roli smtp proxy

    dodany przez Przemysław Sikora

    Co jakiś czas odkrywam nowe funkcjonalności starych narzędzi / aplikacji. Niedawno “bawiłem” się czymś co się nazywa “smtp proxy” przy użyciu nginx-a.

    Co do praktyczności rozwiązania, to mam mieszane uczucia, ale może komuś to się przyda. Przystąpmy od razu do wdrożenia :). Zakładam przypadek, że posiadamy jeden publiczny adres IP np. 79.411.20.12. Nginx będzie musiał nasłuchiwać na tym adresie, na porcie 25, a nasz MTA na 127.0.0.1:25. Poniżej przykładowy plik “nginx.conf”:

    user nginx;
    worker_processes 1;

    error_log /var/log/nginx/error.log warn;
    pid /var/run/nginx.pid;

    events {
    worker_connections 1024;
    }

    http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;

    sendfile on;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enable/*.conf;

    # odtąd zaczyna się sekcja związana z smtp proxy

    server {
    listen 127.0.0.1:8008;
    server_name localhost;
    access_log /var/log/nginx/localhost.access_log main;
    error_log /var/log/nginx/localhost.error_log info;

    root /var/www/localhost/htdocs;

    location ~ .php$ {
    add_header Auth-Server 127.0.0.1;
    add_header Auth-Port 25;
    return 200;
    }
    }
    }
    mail {
    server_name localhost;

    auth_http localhost:8008/auth-smtppass.php;

    server {
    listen ip_publiczne_na_ktorym_ma_sluchac_nginx:25;
    protocol smtp;
    timeout 10s;
    proxy on;
    xclient off;
    smtp_auth none;
    }
    }

    W opisanym przypadku, gdy nasze główne MTA nasłuchuje na 127.0.0.1:25, trzeba pamiętać aby w ustawieniach np. exima, nie mieć ustawionego adresu 127.0.0.1 jako relay, lub trust. W przeciwnym wypadku, staniemy się tzw openrelay-em.

Dodaj komentarz

Warto odwiedzić
Valid XHTML 1.0 Transitional centos.com.pl- mapa strony