Jak skonfigurować serwer e-mail?

59

Na moim VPS działa Ubuntu i chciałbym móc otrzymywać wiadomości e-mail do mojej domeny.

Jak w łatwy sposób skonfigurować serwer poczty, aby to zrobić?

Stefano Palazzo
źródło
3
Świetne pytanie, czekam na świetną odpowiedź. Przez lata zbudowałem kilka serwerów pocztowych i nigdy nie było to łatwe. Wiele decyzji: jaki serwer SMS, jaki IMAP / POP, jak przechowywać maile, jak przechowywać użytkowników ... Nie jestem w stanie udzielić łatwej odpowiedzi.
Javier Rivera

Odpowiedzi:

48

Tak skonfigurowałem pocztę na naszych maszynach produkcyjnych. Oto kryteria, których potrzebowaliśmy:

  • Konta email
  • Aliasy e-mail (forwardery)
  • IMAP, POP3 i SMTP

„Easy” (tl; dr)

Po pierwsze, chcę zająć się tym, co wydaje się najłatwiejszym rozwiązaniem.

sudo tasksel install mail-server

Wystąpiło kilka problemów z tym, gdy wypróbowaliśmy to: Najpierw instaluje Dovecot, co jest w porządku dla większości, ale uznaliśmy, że Kurier jest lepszy z tych dwóch dla naszych potrzeb. Po drugie, wykorzystuje Postfix, co jest świetne, ale potrzebujemy również Exima, ponieważ jest to mocniejszy serwer MTA / SMTP. Po trzecie, instaluje MySQL - w konfiguracji, której używam, wolimy płaskie pliki do konfiguracji, ponieważ jest to jeden punkt krytyczny. Pomyśl, co by się stało, gdyby MySQL rozbił się z nieznanego powodu. W przeciwnym razie reszta pakietów jest dość prosta i łatwa w utrzymaniu dla małej usługi pocztowej (pomyśl o sumie 1-2 domen e-mail).

Nasza konfiguracja

Struktura katalogów

Odchodzimy nieco poza ścieżkę normalnych konfiguracji, ale ułatwia to zarządzanie.

Cała nasza poczta jest przechowywana w /var/mail/virtual/<domain>/<user>/mailwięc dla przyszłych przykładach będę używał [email protected], [email protected], [email protected]aby reprezentować adres e-mail, aby przejść do spedytora [email protected]i zły adres odpowiednio. W powyższym przykładzie byłoby to /var/mail/virtual/example.com/email/mail.

Prowadzę również listę wszystkich domen na serwerze, /etc/valiasesale więcej o tym później.

Przyrostek

To mniej więcej łatwa część konfiguracji. Wystarczy zainstalować postfixpakiet.

Exim

Zainstaluj Exim z apt-get install exim4 exim4-base exim4-config exim4-daemon-heavyPo zainstalowaniu musisz edytować domyślną konfigurację exim, aby zastąpić lub dodać następujące wartości:

domainlist local_domains = @:localhost:dsearch;/etc/valiases:dsearch;/var/mail/virtual
daemon_smtp_ports = smtp : 587 : 465
MAIN_TLS_ENABLE = yes

(Te linie pojawią się w różnych częściach pliku, zamień odpowiednio każdą)

Po zakończeniu przebuduj konfigurację exim za pomocą update-exim4.confTo kończy zmiany wymagane dla Exim

Kurier

Zainstalować Courier z courier-basetym należy zainstalować courier-authdaemon, courier-authlib*, courier-imap*, courier-pop*, courieruserinfo,courier-ssl

Szczerze mówiąc, niewiele jest konfiguracji poza standardem. Musisz tylko utworzyć bazę danych użytkowników.

Konta

Exim i Kurier sprawdzają kilka miejsc, aby sprawdzić, czy login lub przychodząca wiadomość e-mail są prawidłowe. Exim sprawdza, czy domena jest wymieniona jako lokalna nazwa hosta, czy domena jest w domenie /var/mail/virtuallub czy domena jest w domenie /etc/valiases.

Tworzenie kont e-mail

W końcu stworzyłem kilka narzędzi, aby usprawnić ten proces - ale dodanie nowego użytkownika polega na:

mkdir -p /var/mail/virtual/example.com/email
chown -R mail.mail /var/mail/virtual/example.com/
maildirmake /var/mail/virtual/example.com/email/mail
chown -R mail.mail /var/mail/virtual/example.com/

Następnie dodaj adres do kuriera userdb - aby mogli się zalogować

userdb [email protected] set uid=8 gid=8 home=/var/mail/virtual/example.com/email mail=/var/mail/virtual/example.com/email/mail

Pamiętaj, aby w razie potrzeby zastąpić wartości. Ponadto - uidi gid muszą być numerycznymi identyfikatorami użytkownika / grupy dla użytkownika poczty.

userdbpw -md5 | userdb [email protected] set systempw

Spowoduje to monit o podanie hasła, wprowadź hasło, którego chcesz użyć dla konta.

makeuserdb

Na koniec wygeneruj pliki skrótu / cienia userdb. Uruchom ponownie Kuriera i sprawdź, czy zmiany działają:

authtest [email protected]

Powinien produkować coś podobnego do

Authentication succeeded.

     Authenticated: [email protected]  (uid 8, gid 8)
    Home Directory: /var/mail/virtual/example.com/email
           Maildir: /var/mail/virtual/example.com/email/mail
             Quota: (none)
Encrypted Password: $1$LOLCATS$THISWILLBEAHASH.
Cleartext Password: (none)
           Options: (none)

Jeśli zobaczysz komunikat „Uwierzytelnianie nie powiodło się: Operacja niedozwolona”, zamiast tego edytuj plik / etc / courier / authdaemonrc i dodaj authuserdb do linii authmodulelist.

Po potwierdzeniu wszystkich testów uruchom ponownie różne usługi ( courier-authdaemon, exim4), otwórz porty 143, 25, 586, 495, 110 i skonfiguruj konta w swoim ulubionym kliencie pocztowym.

Tworzenie aliasów e-mail

Dla każdej domeny należy utworzyć plik /etc/valiases(utwórz, jeśli nie istnieje) zawierający przynajmniej następujący wiersz:

*: :fail: No user at this address.

Co to mówi: jeśli przychodząca poczta nie pasuje do żadnego konta e-mail, które mam w archiwum, to poczta powinna zostać uszkodzona i odesłana z komunikatem: „Żaden użytkownik nie ma tego adresu”. Tak więc cała poczta wysłana z informacją: [email protected]zostanie odrzucona jako niepowodzenie.

Mamy jednak kilka adresów e-mail, które chcielibyśmy utrzymywać gdzie indziej - powiedzmy [email protected] - aby to zrobić, musimy utworzyć, /etc/valiases/example.coma zawartość pliku powinna wyglądać następująco:

fwd: [email protected]
*: :fail: No user at this address.

W ten sposób, mimo że [email protected] nie pasuje do żadnego konta e-mail na serwerze, pasuje do /etc/valiasespliku, a poczta zostanie przesłana do [email protected] - Jednak [email protected] nadal zawiedzie z komunikat „Brak użytkownika pod tym adresem”.

Marco Ceppi
źródło
11
Czy zawiera numer ISBN?
Wesley,
1
@WesleyDavid Nie sądzę, że moja historia bashów pojawi się jako ISBN :)
Marco Ceppi
Po prostu podążam za nimi - bardzo doceniam - edytowałem powyżej, aby ukryć błąd, który wystąpił w wierszu authtest.
Darren Greaves
@DarrenGreaves Thanks! Cieszę się, że to pomogło i dziękuję za aktualizację!
Marco Ceppi
Walczę, żeby to wszystko działało - dostałem tylko routing walidacji, kiedy dodałem (zredagowany dla ścieżek) plik routingu 350 z debian-administration.org/articles/140 - domeny wirtualne w ogóle nie działają - czy w ogóle musiałeś dodać jakieś pliki routingu? Ta.
Darren Greaves
14

Najłatwiej jest uruchomić sudo tasksel install mail-server. To da ci serwer e-mail z rozsądnymi ustawieniami domyślnymi. Wszystko, co musisz zrobić, to odpowiedzieć na kilka pytań. Oczywiście nadal możesz wykonywać ręczne konfiguracje, jeśli jest to konieczne, ale w większości przypadków tak nie będzie. Postępuj zgodnie ze wskazówkami na ekranie i wszystko powinno być w porządku.

Czytanie na temat administracji usługami e-mail jest jednak absolutnie godne polecenia.

Oficjalne referencje:

Jo-Erlend Schinstad
źródło
Czy istnieje leniwy sposób, aby zobaczyć, co się stanie (pakiety, które zainstaluje, ustawienia domyślne) ?. Przez leniwy mam na myśli to, że sam go nie instaluję.
Javier Rivera
@Javier można wyświetlić, jakie treści są instalowane, uruchamiającsudo tasksel --task-packages mail-server
Marco Ceppi
Konfiguracja przechowywana w MySQL, bez antyspamu, antywirusa ... to nie jest dla nas naprawdę przydatne :(.
Javier Rivera
4

Po prostu robię to sam, naprawdę potrzebujesz postfiksu, aw moim przypadku chciałem również serwera imap, aby móc używać fajnego klienta GUI (nie wspominając żadnych nazw) na innym komputerze. Użyłem tych dokumentów:

Przyrostek

Dovecot (imap i pop3)

To jest naprawdę dość proste, uruchomiłem go w ciągu kilku minut i otrzymuję e-maile. Jest to także przydatne, aby sprawdzić, że wszystko jest ustawione ok pingability .

Aha, i oczywiście będziesz musiał poprawnie skonfigurować wpisy dns, jak poniżej (w oparciu o ustawienia, które działały dla mnie):

name   type   content
  @      A     ???.???.??.??    
mail     A     ???.???.??.??

i

         MX Records
Name                 Priority
mail.mydomain.com.      1
mail2.mydomain.com.     2

Zwróć uwagę na kropkę na końcu serwerów pocztowych i w razie potrzeby wstaw adres IP i nazwę domeny.

Nim Chimpsky
źródło