Korzystanie z “make” do konserwacji Postfix pliku


Original: http://www.unixwiz.net/techtips/postfix-makefiles.html

Byliśmy szczęśliwi użytkownicy doskonałej serwerze poczty Postfix na jakiś czas – to jest tak dużo ładniejszy doświadczenia niż Sendmail. W procesie stworzyliśmy niewielką techniki zarządzania różnych małych plików bazy danych czy Postfix używa, i zostałem poproszony o opracowanie na ich temat. Stąd Tech Tip.

ALE – to nie tutorial Postfix jest, ani nie jest zaprojektowany, aby zapewnić konfiguracji porady. To jest wyłącznie o tym, jak zarządzać konfiguracją, że znalazłeś się na własną rękę.
Budowlane. Db z plików tekstowych

Postfix main.cf Plik konfiguracyjny może określić lokalizację kilka małych plików baz danych (“map”):

virtual_alias_maps =
hash :/ etc / postfix / virtual

transport_maps =
hash :/ etc / postfix / transport

relay_domains =
$ Mydestination,
$ Mydomain,
hash :/ etc / postfix / przekaźniki

i tak dalej. Są to “hash” mapy, które są utrzymywane w Berkeley DB format (są jeszcze inne formaty, mapa ale nie jesteśmy adresowania ich tutaj). Pliki te są przechowywane w zwykłym formacie tekstowym, a następnie “skompilowany” do formatu DB z postmap polecenia, który jest wyposażony w Postfix.

Budowanie dowolny plik mapy jest dość prosta, a my użyć pliku transportowej jako przykład:

# Cd / etc / postfix

# Vi transportu
example.com smtp: [mail.example.com]: 25

# Ls-l * Transport
-Rw-r – r – 1 root root 7292 30 listopada 2002 Transport

# Postmap transportu tworzy “transport.db” z “transportem”

# Ls-l * Transport
-Rw-r – r – 1 root root 7292 30 listopada 2002 Transport
-Rw-r – r – 1 root root 12288 26 września 14:24 transport.db

Kolejne edycje tego pliku po prostu wymaga uruchomiony komendę postmap transportową ponownie odbudować. Pliku bazy.

. Ale jak wielu z tych db plików wzrasta, coraz trudniej śledzić, które z nich muszą być odbudowane po kilku zmian: zmiany konfiguracji są często w grupach. Jest możliwe, aby stworzyć mały skrypt, aby to zrobić:

# Cd / etc / postfix

Cat # rebuild-mapy
cd / etc / postfix
newaliases “aliasy” plik jest szczególnym przypadkiem
postmap transportu
przekaźniki postmap
postmap wirtualny

# Chmod + x rebuild-mapy

#. / Rebuild-maps

Choć jest to proste, odbudowuje pliki nawet jeśli nie są niezbędne. Użyliśmy polecenie make tak długo, że zatrudniając go tutaj czuje się naprawdę naturalne dla nas. To jedna z najstarszych części programistycznym UNIX narzędzi.
Budowanie makefile

“Makefile” to mały plik tekstowy, który opisuje relacje zależności między różnymi plikami, jak również instrukcje dotyczące sposobu odbudowania plików docelowych z plików źródłowych. To jest dokładnie to, co robimy tutaj: w przykładzie pokazaliśmy wcześniej, “transport” jest plik źródłowy i “transport.db” jest plik obiektowy.

1: MAPS = relays.db aliases.db transport.db relocated.db \
2: virtual.db sender_checks.db rejected_recips.db \
3: helo_access.db
4:
5: all: $ (MAPS)
6:
7: aliases.db: Aliasy
8: newaliases tab
9:
10:.% Db:%
11: postmap tab $ *

Przeanalizujemy ten makefile, choć nie wyłącznie, w celu od góry do dołu. Używamy GNU Make wyłącznie – starsze marki nie mają dość tej samej składni dla wszystkich części.

Linie 1 .. 3
Definiowanie zmiennej markę, który wymienia wszystkie pliki bazy danych budujemy: użycie $ (MAPS) później w pliku odnosi się do całej listy jako ciąg znaków.
Linia 5
Definiuje rzeczywistą zależność: “cel” (po lewej stronie okrężnicy) jest wszystkim, i zależy od wszystkich z prawej strony dwukropka. Oznacza to, że pisanie, aby wszystkie wymaga, aby wszystkie elementy w $ (MAPS) listy zostać złożony w terminie.
Linie 7 .. 8
To określa szczegółową zasadę budowania cel. Jeśli cel (aliases.db) jest albo nie ma, albo jest starszy niż pseudonimy, działania, które następują są uruchamiane jedno polecenie w czasie. Chociaż większość map używanych przez Postfix są zbudowane z postmap polecenia Plik aliases jest szczególnym przypadkiem.
Linie 10 .. 11
To określa ogólny przepis, który konwertuje z pliku (zależność) do FILE.db (docelowy) w ogólnym przypadku, a działanie – tab-wcięte następujący wiersz – jest polecenie, które pomaga tworzyć ten temat. Tutaj, to postmap polecenia i $ * jest wbudowana zmienna odnosi się do uzależnienia.

Kiedy polecenie make jest uruchamiany, znajduje pierwszy cel w pliku i używa go jako ogólny cel. W tym przypadku, to wszystko. To nie jest “prawdziwy” cel (w sensie faktycznie tworząc plik o tej nazwie), ale to jest wspólne catch-all virtual regułą.

Zależności są wszystkie pliki na prawej stronie – elementy $ (MAPS) makro – i każdy z nich przechodzi przez ten sam proces. Lista wszystkich reguł jest konsultowany, a “najlepsze dopasowanie” znajduje się, jeśli to możliwe. Bardziej szczegółowy przepis zawsze dopasowuje się do zasady mniej konkretnego: chociaż linie 10,11 reguła może zbudować aliases.db z aliasów z postmap polecenia, najbardziej specyficzne zasady tuż nad nim jest używany.

Po makefile jest skonstruowany, jeden po prostu edytuje pliki tekstowe jako potrzebne, a następnie wpisz make.

WAŻNE – jeżeli karta jest podany, musi ona być obecna – korzystanie z pomieszczeń nie jest równoważny. Błędnie używając spacji zamiast karty jest jedną z głównych przyczyn łamanego makefile. Nie jest oczywiste.
Inne ciekawostki

Nie jesteśmy w ogóle pragną dostać się do “make poradnik” biznesu, ale istnieje kilka dodatkowych uwag będziemy dotykać się.

Program make jest niezbędny do bardzo różnych celów, nie tylko dla tradycyjnego programistycznym roli, dla których zostały zaprojektowane. Czas spędzony nauki korzystania zrobić dobrze może zostać zwrócona w dół drogi.
Używamy wyłącznie GNU make: to doskonałe narzędzie z wieloma dodatkowymi funkcjami, niż znaleźć w wersji tradycyjnej. Jest szeroko przenośne (nawet używać go do systemu Windows rozwoju), i po prostu nie dają żadnej uwagi na sposoby, które starsze programy działają make. GNU make dokumentację można nabyć GNU Press.
Po wprowadzeniu zmian do jednego lub większej liczby plików tekstowych, to sprawiedliwe, by zastanawiać się tylko to, co zostanie zbudowany jeśli make przeprowadzono teraz: można sprawdzić, uruchamiając make-n, która prosi, aby wyświetlić polecenia to uruchomić, ale nie faktycznie zrobić.

Comments are closed.