-
Postsrsd, czyli implementacja SRS w Postfix
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_recipientKolejnym 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>