• Postsrsd, czyli implementacja SRS w Postfix

    dodany przez Przemysław Sikora

    Zastanawialiście się pewnie kiedyś, dlaczego nie działa forward wiadomości na innych serwer, a nadawcy wiadomości otrzymują zwrotkę z informacją o błędzie SPF. Taki efekt jest zupełnie normalny, ponieważ zmienia się de facto serwer nadawcy i SPF-y nie pasują. Po to powstał SRS (sender rewriting scheme), który zmienia Return-Path

    Po dokładną lekturę i opis mechanizmu, zapraszam do wujka Google. Skupię się na instalacji i implementacji. W konsoli wydajemy następujące polecenia:

    yum install git cmake
    git clone https://github.com/roehling/postsrsd.git
    cd postsrsd/
    make

    mkdir -p build
    cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="" -DCMAKE_C_COMPILER=cc
    -- The C compiler identification is GNU 4.8.5
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Looking for sys/wait.h
    -- Looking for sys/wait.h - found
    -- Looking for wait.h
    -- Looking for wait.h - found
    -- Looking for sys/time.h
    -- Looking for sys/time.h - found
    -- Looking for time.h
    -- Looking for time.h - found
    -- Looking for alloca.h
    -- Looking for alloca.h - found
    -- Looking for sys/types.h
    -- Looking for sys/types.h - found
    -- Detected init flavor: systemd
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /opt/postsrsd/build
    make -C build all
    make[1]: Wejście do katalogu `/opt/postsrsd/build'
    make[2]: Wejście do katalogu `/opt/postsrsd/build'
    make[3]: Wejście do katalogu `/opt/postsrsd/build'
    Scanning dependencies of target postsrsd
    make[3]: Opuszczenie katalogu `/opt/postsrsd/build'
    make[3]: Wejście do katalogu `/opt/postsrsd/build'
    [ 33%] Building C object CMakeFiles/postsrsd.dir/postsrsd.o
    [ 66%] Building C object CMakeFiles/postsrsd.dir/sha1.o
    [100%] Building C object CMakeFiles/postsrsd.dir/srs2.o
    Linking C executable postsrsd
    make[3]: Opuszczenie katalogu `/opt/postsrsd/build'
    [100%] Built target postsrsd
    make[2]: Opuszczenie katalogu `/opt/postsrsd/build'
    make[1]: Opuszczenie katalogu `/opt/postsrsd/build'

    make install

    make -C build install
    make[1]: Wejście do katalogu `/opt/postsrsd/build'
    make[2]: Wejście do katalogu `/opt/postsrsd/build'
    make[3]: Wejście do katalogu `/opt/postsrsd/build'
    make[3]: Opuszczenie katalogu `/opt/postsrsd/build'
    [100%] Built target postsrsd
    make[2]: Opuszczenie katalogu `/opt/postsrsd/build'
    Install the project...
    -- Install configuration: "Release"
    -- Installing: /usr/local/sbin/postsrsd
    -- Installing: /usr/local/share/doc/postsrsd/README.md
    -- Installing: /usr/local/share/doc/postsrsd/README_UPGRADE.md
    -- Installing: /usr/local/share/doc/postsrsd/main.cf.ex
    -- Chroot jail: /usr/local/lib/postsrsd
    -- Installing: /etc/default/postsrsd
    -- Installing: /etc/systemd/system/postsrsd.service
    -- Generating secret key
    -- Installing: /etc/postsrsd.secret
    make[1]: Opuszczenie katalogu `/opt/postsrsd/build'

    Następnie przystępujemy do edycji pliku “/etc/postfix/main.cf”. Dodajemy:
    sender_canonical_maps = tcp:127.0.0.1:10001
    sender_canonical_classes = envelope_sender
    recipient_canonical_maps = tcp:127.0.0.1:10002
    recipient_canonical_classes = envelope_recipient

    Kolejnym krokiem jest edycja pliku konfiguracyjnego postsrsd. Modyfikujemy następujące wpisy:

    vim /etc/default/postsrsd

    SRS_DOMAIN = moja.domena # domyślną wartością jest "mydomain" z ustawień Postfixa
    SRS_EXCLUDE_DOMAINS = domena1.pl domena2.pl # edytujemy, aby dodać wyjątki domen dla których SRS nie będzie aktywny.

    Uruchamiamy daemona postsrs poleceniem:

    service postsrsd start

    dla CentOS 5 i 6

    systemctl start postsrsd

    dla CentOS 7

    Ostatnim etapem jest restart Postfixa

    service postfix start

    dla CentOS 5 i 6

    systemctl start postfix

    dla CentOS 7

    UWAGA !!!
    W przypadku CentOS 6 wymagana jest zmiana wersji Posfixa na wyższą, obsługującą “tcp”

    P.S. Najprostszym sposobem sprawdzenia efektu naszych trudów, jest sprawdzenie Return-Path wiadomości przychodzących. Powinny wyglądać mniej więcej tak:
    Return-Path: <SRS0=6+MI=TW=domena-nadawcy=adres-przed-malpa@SRS_DOMAIN>

Dodaj komentarz

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