diff --git a/documentation/content/de/books/handbook/mail/_index.adoc b/documentation/content/de/books/handbook/mail/_index.adoc index fcaea84f03..0622c2236f 100644 --- a/documentation/content/de/books/handbook/mail/_index.adoc +++ b/documentation/content/de/books/handbook/mail/_index.adoc @@ -1,956 +1,956 @@ --- title: Kapitel 28. Elektronische Post (E-Mail) part: Teil IV. Netzwerke prev: books/handbook/ppp-and-slip next: books/handbook/network-servers showBookMenu: true weight: 33 path: "/books/handbook/" --- [[mail]] = Elektronische Post (E-Mail) :doctype: book :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: 28 :partnums: :source-highlighter: rouge :experimental: :images-path: books/handbook/mail/ ifdef::env-beastie[] ifdef::backend-html5[] :imagesdir: ../../../../images/{images-path} endif::[] ifndef::book[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] toc::[] endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] toc::[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [[mail-de-term]] == Terminologie Das Akronym _MTA_ steht für _Mail Transfer Agent_ was übersetzt "Mailübertragungs-Agent" bedeutet. Während die Bezeichnung _Server-Dämon_ die Komponente eines MTA benennt, die für eingehende Verbindungen zuständig ist, wird mit dem Begriff _Mailer_ öfters die Komponente des MTA bezeichnet, die E-Mails versendet. [[mail-synopsis]] == Übersicht "Elektronische Post", besser bekannt als E-Mail, ist eine der am weit verbreitetsten Formen der Kommunikation heutzutage. Dieses Kapitel bietet eine grundlegende Einführung in das Betreiben eines E-Mail-Servers unter FreeBSD. Ebenfalls wird der Versand und Empfang von E-Mails unter FreeBSD behandelt. Eine umfassende Betrachtung zu diesem Thema finden Sie in den Büchern, die in crossref:bibliography[bibliography,Bibliografie] aufgelistet sind. Dieses Kapitel behandelt die folgenden Punkte: * Welche Software-Komponenten beim Senden und Empfangen von elektronischer Post involviert sind. * Wo sich grundlegende Sendmail Konfigurationsdateien in FreeBSD befinden. * Den Unterschied zwischen entfernten und lokalen Postfächern. * Wie man Versender von Spam daran hindern kann, E-Mail-Server illegalerweise als Weiterleitung zu verwenden. * Wie man einen alternativen MTA installiert und konfiguriert, um Sendmail zu ersetzen. * Wie man oft auftretende E-Mail-Server Probleme behebt. * Wie E-Mails über einen Relay verschickt werden. * Wie E-Mails über eine Einwahlverbindung gehandhabt werden. * Wie SMTP-Authentifizierung einrichtet wird. * Den Empfang und den Versand von E-Mails mithilfe von Programmen wie mutt. * Wie E-Mails von einem entfernten Server mit POP oder IMAP abgeholt werden. * Wie eingehende E-Mail automatisch gefiltert wird. Bevor Sie dieses Kapitel lesen, sollten Sie: * Die Netzwerk-Verbindung richtig einrichten. (crossref:advanced-networking[advanced-networking,Weiterführende Netzwerkthemen]). * Die DNS-Information für einen E-Mail-Server einstellen (crossref:network-servers[network-servers,Netzwerkserver]). * Wissen, wie man zusätzliche Dritthersteller-Software installiert (crossref:ports[ports,Installieren von Anwendungen: Pakete und Ports]). [[mail-using]] == E-Mail Komponenten Es gibt fünf größere Komponenten die am Austausch von E-Mails beteiligt sind: der Mail User Agent (MUA), der Mail Transfer Agent (MTA), der Mail Host, ein entferntes oder lokales Postfach, sowie DNS. Dieser Abschnitt enthält eine Übersicht über diese Komponenten. Mail User Agent (MUA):: Der Mail User Agent (MUA) ist das Benutzerprogramm zum Verfassen, Senden und Empfangen von E-Mails. Diese Anwendung kann ein Kommandozeilenprogramm sein, wie das in FreeBSD enthaltene Programm `mail`, oder ein Programm aus der Ports-Sammlung wie beispielsweise mutt, alpine oder elm. In der Ports-Sammlung sind auch dutzende von grafischen Programmen verfügbar, darunter ClawsMail, Evolution und Thunderbird. Einige Unternehmen bieten auch ein Web-Mail-Programm an, das über einen Webbrowser verwaltet werden kann. Weitere Informationen zur Installation und Verwendung von MUAs unter FreeBSD finden Sie im <>. Mail Transfer Agent (MTA):: Der Mail Transfer Agent (MTA) ist ein E-Mail-Server Daemon, welcher für dem Empfang von eingehenden E-Mails und für den Versand von ausgehenden E-Mails verantwortlich ist. FreeBSD wird mit Sendmail als Standard-MTA ausgeliefert, aber es unterstützt auch weitere E-Mail-Server, darunter Exim, Postfix und qmail. Die Konfiguration von Sendmail wird im <> beschrieben. Wenn Sie einen anderen MTA aus der Ports-Sammlung installieren, lesen Sie die Nachrichten die nach der Installation der Anwendung ausgegeben werden, wenn Sie FreeBSD spezifische Informationen benötigen. Allgemeine Informationen zur Konfiguration finden Sie in der Regel auf der Webseite des Herstellers. Mail Host und Postfächer:: Der Mail Host ist für die Zustellung und das Empfangen von E-Mails für den Rechner oder eines Netzwerks zuständig. Der Mail Host empfängt alle E-Mails für eine Domäne und speichert diese entweder im voreingestellten [.filename]#mbox#-Format, oder im Maildir-Format. Diese E-Mails können lokal mit einem Benutzerprogramm MUA gelesen werden. Mithilfe von Protokollen wie POP oder IMAP können die E-Mails auch von entfernten Rechnern gelesen werden. Wenn die E-Mails direkt auf dem Mail Host gelesen werden, wird kein POP- oder IMAP-Server benötigt. + Um auf entfernte Postfächer zuzugreifen, wird ein Zugang zu einem POP- oder IMAP-Server benötigt. Beide Protokolle ermöglichen es Benutzern, auf ein entferntes Postfach zuzugreifen. IMAP bietet gegenüber POP einige Vorteiler. Dazu zählt die Fähigkeit eine Kopie aller Nachrichten auf einem entfernten Server zu speichern, sowie gleichzeitig ablaufende Aktualisierungen. IMAP kann auch über langsame Verbindungen nützlich sein, da nicht gleich die komplette Nachricht heruntergeladen wird. Weiterhin können E-Mails auf dem Server durchsucht werden, was den Datenverkehr zwischen Clients und dem Server minimiert. + Die Ports-Sammlung enthält einige POP- und IMAP-Server, darunter package:mail/qpopper[], package:mail/imap-uw[], package:mail/courier-imap[] und package:mail/dovecot2[]. + [WARNING] ==== Beachten Sie, dass sowohl POP als auch IMAP Daten, wie den Benutzernamen und das Passwort, im Klartext übertragen. Um die Übermittlung von Daten über diese Protokolle zu schützen, können Sie Sitzungen über man:ssh[1] (crossref:security[security-ssh-tunneling,"SSH-Tunnel"]) tunneln oder SSL (crossref:security[openssl,"OpenSSL"]) verwenden. ==== Domain Name System (DNS):: Das Domain Name System (DNS) und sein Daemon `named` spielen eine große Rolle bei der Auslieferung von E-Mails. Um E-Mails auszuliefern, fragt der MTA im DNS den Rechner ab, der E-Mails für das Zielsystem entgegennimmt. Der gleiche Vorgang läuft ab, wenn eine E-Mail von einem entfernten Server zum MTA zugestellt wird. + Im DNS werden Rechnernamen auf IP-Adressen abgebildet. Daneben werden spezielle Informationen für das Mail-System gespeichert, die _MX-Einträge_ (MX record) genannt werden. Der MX-Eintrag (von Mail eXchanger) gibt an, welche Rechner E-Mails für eine Domäne annehmen. + Mit man:host[1] können die MX-Einträge für eine Domäne abgefragt werden: + [source,shell] .... # host -t mx FreeBSD.org FreeBSD.org mail is handled by 10 mx1.FreeBSD.org .... + Weitere Informationen zu DNS und dessen Konfiguration finden Sie im crossref:network-servers[network-dns,"Domain Name System (DNS)"]. [[sendmail]] == Sendmail-Konfigurationsdateien Sendmail ist der standardmäßig in FreeBSD installierte MTA. Es nimmt E-Mails von E-Mail-Benutzerprogrammen (MUA) entgegen und liefert diese zu den entsprechenden Mail Hosts, die in der Konfigurationsdatei definiert sind. Sendmail kann auch Netzwerkverbindungen annehmen und E-Mails an lokale _Mailboxen_, oder an andere Programme ausliefern. Die Konfigurationsdateien von Sendmail befinden sich in [.filename]#/etc/mail#. In diesem Abschnitt werden diese Dateien im Detail beschrieben. [.filename]#/etc/mail/access#:: Diese Datenbank bestimmt, welche Rechner oder IP-Adressen Zugriff auf den lokalen Mail-Server haben und welche Art von Zugriff ihnen gestattet wird. Rechner die als `OK` aufgelistet sind, was der Standard ist, sind berechtigt E-Mails zu diesem Rechner zu schicken, solange die endgültige Zieladresse der lokale Rechner ist. Rechner die als `REJECT` aufgelistet sind, werden abgelehnt. Rechner die als `RELAY` aufgelistet sind, wird es erlaubt Post für jede Zieladresse durch diesen Mail-Server zu senden. Rechner die als `ERROR` aufgelistet sind, bekommen ihre E-Mail mit einem speziellen Fehler zurück. Wenn ein Rechner als `SKIP` aufgelistet ist, wird Sendmail die aktuelle Suche abbrechen, ohne die E-Mail zu akzeptieren oder abzulehnen. E-Mails von Rechnern die als `QUARANTAINE` aufgelistet sind, werden vorerst zurückgehalten. Dem sendenden Rechner wird ein festgelegter Text als Grund für die Quarantäne zurückgeschickt. + Beispiele für die Verwendung dieser Optionen für IPv4- und IPv6-Adressen finden Sie in der Beispielkonfiguration [.filename]#/etc/mail/access.sample#: + [.programlisting] .... # $FreeBSD$ # # Mail relay access control list. Default is to reject mail unless the # destination is local, or listed in /etc/mail/local-host-names # ## Examples (commented out for safety) #From:cyberspammer.com ERROR:"550 We don't accept mail from spammers" #From:okay.cyberspammer.com OK #Connect:sendmail.org RELAY #To:sendmail.org RELAY #Connect:128.32 RELAY #Connect:128.32.2 SKIP #Connect:IPv6:1:2:3:4:5:6:7 RELAY #Connect:suspicious.example.com QUARANTINE:Mail from suspicious host #Connect:[127.0.0.3] OK #Connect:[IPv6:1:2:3:4:5:6:7:8] OK .... + Um die Datenbank zu konfigurieren, verwenden Sie das im Beispiel gezeigte Format, um Einträge in [.filename]#/etc/mail/access# hinzuzufügen, aber setzen Sie kein Kommentarsymbol (`#`) vor die Einträge. Erstellen Sie einen Eintrag für jeden Rechner, dessen Zugriff konfiguriert werden soll. E-Mail-Versender, die mit der linken Spalte der Tabelle übereinstimmen, sind betroffen von der Aktion in der rechten Spalte. + Immer wenn diese Datei verändert wurde, muss die Datenbank aktualisiert und Sendmail neu gestartet werden: + [source,shell] .... # makemap hash /etc/mail/access < /etc/mail/access # service sendmail restart .... [.filename]#/etc/mail/aliases#:: Diese Datenbank enthält eine Liste der virtuellen Mailboxen, die in andere Benutzer, Dateien, Programme oder andere Aliase expandiert werden. Hier sind ein paar Beispiele, die das Dateiformat verdeutlichen: + [.programlisting] .... root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail" .... + Der Name der Mailbox auf der linken Seite des Doppelpunkts wird mit den Zielen auf der rechten Seite ersetzt. Der erste Eintrag ersetzt die Mailbox `root` mit der Mailbox `localuser`, die dann in der Datenbank [.filename]#/etc/mail/aliases# gesucht wird. Wird kein passender Eintrag gefunden, wird die Nachricht zum `localuser` geliefert. Der zweite Eintrag zeigt eine E-Mail-Verteilerliste. E-Mails an `ftp-bugs` werden zu den drei lokalen Mailboxen `joe`, `eric` und `paul` gesendet. Eine entfernte Mailbox kann auch als _user@example.com_ angegeben werden. Der dritte Eintrag zeigt wie E-Mails in eine Datei geschrieben werden, in diesem Fall [.filename]#/dev/null#. Der letzte Eintrag verdeutlicht das Senden von E-Mails an ein Programm. Hier wird die Nachricht über eine UNIX(R) Pipe an [.filename]#/usr/local/bin/procmail# gesendet. Weitere Informationen zu dem Format dieser Datei finden Sie in man:aliases[5]. + Wenn diese Datei geändert wird, muss `newaliases` ausgeführt werden, um die Datenbank zu aktualisieren. [.filename]#/etc/mail/sendmail.cf#:: Dies ist die Hauptkonfigurations-Datei von Sendmail. Sie kontrolliert das allgemeine Verhalten von Sendmail, einschließlich allem vom Umschreiben von E-Mail Adressen bis hin zum Übertragen von Ablehnungsnachrichten an entfernte E-Mail-Server. Dementsprechend ist die Konfigurationsdatei ziemlich komplex. Glücklicherweise muss diese Datei selten für Standard E-Mail-Server geändert werden. + Die Sendmail Hauptkonfigurationsdatei kann mit man:m4[1] Makros erstellt werden, die Eigenschaften und Verhalten von Sendmail definieren. Einige der Details finden Sie in [.filename]#/usr/src/contrib/sendmail/cf/README#. + Wenn Änderungen an dieser Datei vorgenommen werden, muss Sendmail neu gestartet werden, damit die Änderungen Wirkung zeigen. [.filename]#/etc/mail/virtusertable#:: Diese Datenbank ordnet Adressen für virtuelle Domänen und Benutzern reellen Mailboxen zu. Diese Mailboxen können lokal, auf entfernten Systemen, Aliase in [.filename]#/etc/mail/aliases# oder eine Datei sein. Dadurch können mehrere virtuelle Domains auf einem Rechner gehostet werden. + FreeBSD enthält eine Beispielkonfiguration in [.filename]#/etc/mail/virtusertable.sample#, die das Format genauer beschreibt. Das folgende Beispiel zeigt, wie benutzerdefinierte Einträge in diesem Format erstellt werden: + [.programlisting] .... root@example.com root postmaster@example.com postmaster@noc.example.net @example.com joe .... + Diese Datei wird nach dem ersten übereinstimmenden Eintrag durchsucht. Wenn eine E-Mail-Adresse mit der Adresse auf der linken Seite übereinstimmt, wird sie dem Eintrag auf der rechten Seite zugeordnet. Der erste Eintrag in diesem Beispiel ordnet eine bestimmte E-Mail-Adresse einer lokalen Mailbox zu, während der zweite Eintrag eine bestimmte E-Mail-Adresse einer entfernten Mailbox zuordnet. Zuletzt wird jede E-Mail-Adresse von `example.com`, welche nicht mit einem der vorherigen Einträge übereinstimmt, mit dem letzten Eintrag übereinstimmen und der lokalen Mailbox `joe` zugeordnet. Benutzen Sie dieses Format, wenn Sie neue Einträge in [.filename]#/etc/mail/virtusertable# hinzufügen. Jedes Mal, wenn diese Datei bearbeitet wurde, muss die Datenbank aktualisiert und Sendmail neu gestartet werden: + [source,shell] .... # makemap hash /etc/mail/virtusertable < /etc/mail/virusertable # service sendmail restart .... [.filename]#/etc/mail/relay-domains#:: In der standardmäßigen FreeBSD-Installation wird Sendmail nur dazu konfiguriert, E-Mails von dem Rechner, auf dem es läuft, zu senden. Wenn zum Beispiel ein POP-Server installiert ist, können Benutzer ihre E-Mails von entfernten Standorten überprüfen. Sie werden jedoch keine E-Mails von außen verschicken können. Typischerweise wird ein paar Sekunden nach dem Versuch eine E-Mail von MAILER-DAEMON mit einer `5.7 Relaying Denied` Fehlermeldung versendet werden. + Die einfachste Lösung ist, wie im folgenden Beispiel gezeigt, den FQDN des Internet-Dienstanbieters und gegebenenfalls weitere Adressen in [.filename]#/etc/mail/relay-domains# einzutragen: + [.programlisting] .... your.isq.example.com other.isp.example.net users.isp.example.org www.example.org .... + Nachdem diese Datei erstellt oder editiert wurde, muss Sendmail mittels `service sendmail restart` neu gestartet werden. + Ab jetzt wird jede E-Mail, die von einem in der Liste eingetragenen Rechner durch das System geschickt wird, ihr Ziel erreichen, vorausgesetzt der Benutzer hat einen Account auf dem System. Dies erlaubt es Benutzern aus der Ferne, E-Mails über das System zu versenden, ohne dem Massenversand (SPAM) die Tür zu öffnen. [[mail-changingmta]] == Wechseln des Mailübertragungs-Agenten FreeBSD enthält mit Sendmail bereits einen MTA, der für die ein- und ausgehenden E-Mails verantwortlich ist. Der Systemadministrator kann aber den MTA des Systems wechseln. Eine große Auswahl an alternativen MTAs ist in der Kategorie `mail` der FreeBSD Ports-Sammlung verfügbar. Sobald ein neuer MTA installiert ist, können Sie die neue Software konfigurieren und testen, bevor Sie Sendmail ersetzen. Informationen über die Konfiguration des neu gewählten MTA finden Sie in der dazugehörigen Dokumentation. Sobald der neue MTA wie gewünscht funktioniert, benutzen Sie die Anweisungen in diesem Abschnitt, um Sendmail zu deaktivieren und stattdessen den neuen MTA zu verwenden. [[mail-disable-sendmail]] === Sendmail deaktivieren [WARNING] ==== Wenn der ausgehende Mail-Dienst von Sendmail deaktiviert ist, muss für den E-Mail-Versand ein alternatives System installiert werden. Andernfalls sind Systemfunktionen wie man:periodic[8] nicht mehr in der Lage, ihre Resulate und Meldungen als E-Mail zu versenden. Aber auch viele andere Teile des Systems erwarten einen funktionalen MTA. Sind Programme auf die deaktivierten Sendmail-Binärdateien angewiesen, landen deren E-Mails ansonsten in einer inaktiven Sendmail-Warteschlange und können nicht ausgeliefert werden. ==== Um Sendmail komplett zu deaktivieren, müssen folgende Zeilen in [.filename]#/etc/rc.conf# hinzugefügt oder editiert werden: [.programlisting] .... sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" .... Um lediglich die Funktion zum Empfang von E-Mails durch Sendmail zu deaktivieren, muss folgender Eintrag in [.filename]#/etc/rc.conf# gesetzt werden: [.programlisting] .... sendmail_enable="NO" .... Weitere Informationen zu den Startoptionen von Sendmail finden Sie in der Manualpage man:rc.sendmail[8]. === Den voreingestellten MTA ersetzen Wenn ein neuer MTA über die Ports-Sammlung installiert wird, werden auch die Startskripten installiert. Die Anweisungen zum starten dieser Skripte werden in den Paketnachrichten erwähnt. Bevor Sie den neuen MTA in Betrieb nehmen, stoppen Sie alle laufenden Sendmail-Prozesse. In diesem Beispiel werden alle notwendigen Dienste gestoppt und danach der Postfix Dienst gestartet: [source,shell] .... # service sendmail stop # service postfix start .... Damit der angegebene MTA automatisch beim Hochfahren des Systems gestartet wird, fügen Sie dessen Konfigurationszeile in [.filename]#/etc/rc.conf# hinzu. Dieser Eintrag startet den PostfixMTA: [.programlisting] .... postfix_enable="YES" .... Da Sendmail allgegenwärtig ist und manche Anwendungen einfach davon ausgehen es bereits installiert und konfiguriert, wird einige zusätzliche Konfiguration benötigt. Überprüfen Sie [.filename]#/etc/periodic.conf# und stellen Sie sicher, dass diese Werte auf `NO` gesetzt werden. Wenn die Datei nicht existiert, erstellen Sie sie mit folgenden Einträgen: [.programlisting] .... daily_clean_hoststat_enable="NO" daily_status_mail_enable="NO" daily_status_include_submit_mailq="NO" daily_submit_queuerun="NO" .... Viele alternative MTAs stellen ihre eigenen kompatiblen Implementierungen der Sendmail Kommandozeilen-Schnittstelle zur Verfügung, was die Verwendung als "drop-in" Ersatz für Sendmail vereinfacht. Allerdings versuchen einige MUAs Sendmails Standard-Dateien auszuführen, anstelle der Dateien des neuen MTAs. FreeBSD verwendet [.filename]#/etc/mail/mailer.conf# um die erwarteten Sendmail Dateien auf die neuen Dateien abzubilden. Weitere Informationen über diese Zuordnungen können in man:mailwrapper[8] gefunden werden. In der Voreinstellung sieht [.filename]#/etc/mail/mailer.conf# wie folgt aus: [.programlisting] .... # $FreeBSD$ # # Execute the "real" sendmail program, named /usr/libexec/sendmail/sendmail # sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail .... Wenn eines der Kommandos auf der linken Seite ausgeführt werden soll, führt das System tatsächlich den damit verbundenen Befehl auf der rechten Seite aus. Mit diesem System lassen sich Programme, die für die Sendmail-Funktionen gestartet werden, leicht ändern. Einige MTAs aus der Ports-Sammlung können diese Datei aktualisieren. Zum Beispiel würde Postfix die Datei wie folgt aktualisieren: [.programlisting] .... # # Execute the Postfix sendmail program, named /usr/local/sbin/sendmail # sendmail /usr/local/sbin/sendmail send-mail /usr/local/sbin/sendmail mailq /usr/local/sbin/sendmail newaliases /usr/local/sbin/sendmail .... Falls die Installation des MTA nicht automatisch [.filename]#/etc/mail/mailer.conf# aktualisiert, bearbeiten Sie diese Datei in einem Texteditor, so dass auf die neuen Dateien verwiesen wird. Dieses Beispiel zeigt auf die Dateien, die von package:mail/ssmtp[] installiert wurden: [.programlisting] .... sendmail /usr/local/sbin/ssmtp send-mail /usr/local/sbin/ssmtp mailq /usr/local/sbin/ssmtp newaliases /usr/local/sbin/ssmtp hoststat /usr/bin/true purgestat /usr/bin/true .... Sobald alles konfiguriert ist, wird empfohlen, das System neu zu starten. Ein Neustart bietet auch die Möglichkeit sicherzustellen, dass das System korrekt konfiguriert wurde, um den neuen MTA automatisch beim Hochfahren zu starten. [[mail-trouble]] == Fehlerbehebung Hier finden sich ein paar häufig gestellte Fragen und ihre Antworten, die von der extref:{faq}[FAQ] übernommen wurden. === Warum muss ich einen FQDN (fully-qualified domain name / voll ausgeschriebenen Domänennamen) für meine Rechner verwenden? Vielleicht befindet sich der Rechner in einer anderen Domäne. Um beispielsweise von einem Rechner in `foo.bar.edu` einen Rechner namens `mumble` in der Domäne `foo.bar.edu` zu erreichen, geben Sie seinen voll ausgeschriebenen Domänennamen (FQDN) `mumble.bar.edu`, anstelle von `mumble` an. Das liegt daran, dass die aktuelle Version von BIND, die mit FreeBSD ausgeliefert wird, keine Standardabkürzungen für nicht komplett angegebene Domänennamen außerhalb der lokalen Domäne unterstützt. Daher muss ein nicht-qualifizierter Rechner, wie `mumble`, entweder als `mumble.foo.bar.edu` gefunden werden, oder er wird in der root Domäne gesucht. In älteren Versionen von BIND lief die Suche über `mumble.bar.edu` und `mumble.edu`. RFC 1535 erklärt, warum dieses Verhalten als schlechte Praxis oder sogar als Sicherheitsloch angesehen wird. Um das zu umgehen, setzen Sie die Zeile: [.programlisting] .... search foo.bar.edu bar.edu .... anstatt der vorherigen [.programlisting] .... domain foo.bar.edu .... in [.filename]#/etc/resolv.conf# ein. Stellen Sie jedoch sicher, dass die Suchordnung nicht die Begrenzung von "lokaler und öffentlicher Administration", wie RFC 1535 sie nennt, überschreitet. -=== Wie kann ich einen E-Mail-Server auf einem Anwahl-PPPPPP Rechner betreiben? +=== Wie kann ich einen E-Mail-Server auf einem Anwahl-PPP Rechner betreiben? Sie wollen sich mit einem FreeBSD E-Mail Gateway im LAN verbinden. Die PPP-Verbindung ist keine Standleitung. Ein Weg dies zu tun ist, von einem immer mit dem Internet verbundenen Server einen sekundären MX-Dienst für die Domäne zur Verfügung gestellt zu bekommen. In diesem Beispiel heißt die Domäne `example.com`, und der Internet-Dienstanbieter hat `example.net` so eingestellt, dass er für die Domäne einen sekundären MX-Dienst zur Verfügung stellt: [.programlisting] .... example.com. MX 10 bigco.com. MX 20 example.net. .... Nur ein Rechner sollte als Endempfänger angegeben sein. Sendmail fügen Sie `Cw example.com` zu [.filename]#/etc/sendmail.cf# auf `example.com` hinzu. Wenn der MTA des Versenders versucht die E-Mail zuzustellen, wird es versuchen das System `example.com` über die PPP-Verbindung zu erreichen. Es kommt zu einer Zeitüberschreitung, wenn das Zielsystem offline ist. Der MTA wird die E-Mail automatisch der sekundären MX-Seite des Internet-Providers `example.net` zustellen. Die sekundäre MX-Seite wird periodisch versuchen, eine Verbindung zur primären MX-Seite `example.com` aufzubauen. Verwenden Sie etwas wie dies als Login-Skript: [.programlisting] .... #!/bin/sh # Put me in /usr/local/bin/pppmyisp ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp .... Wenn Sie ein separates Login-Skript für einen Benutzer erstellen, benutzen Sie stattdessen `sendmail -qRexample.com` in dem oben gezeigten Skript. Das erzwingt die sofortige Verarbeitung der E-Mails in der Warteschlange für `example.com` Eine weitere Verfeinerung der Situation kann an diesem Beispiel von {freebsd-isp} entnommen werden: [.programlisting] .... > wir stellen einem Kunden den sekundären MX zur Verfügung. > Der Kunde verbindet sich mit unseren Diensten mehrmals am Tag > automatisch um die E-Mails zu seinem primären MX zu holen > (wir wählen uns nicht bei ihm ein, wenn E-Mails für seine > Domäne eintreffen). Unser sendmail sendet den Inhalt der > E-Mail-Warteschlange alle 30 Minuten. Momentan muss er 30 Minuten > eingewählt bleiben um sicher zu sein, dass alle seine E-Mails > beim primären MX eingetroffen sind. > > Gibt es einen Befehl, der sendmail dazu bringt, alle E-Mails sofort > zu senden? Der Benutzer hat natürlich keine root-Rechte auf > unserer Maschine. In der privacy flags Sektion von sendmail.cf befindet sich die Definition Opgoaway,restrictqrun Entferne restrictqrun um nicht-root Benutzern zu erlauben, die Verarbeitung der Nachrichten-Warteschlangen zu starten. Möglicherweise willst du auch die MX neu sortieren. Wir sind der primäre MX für unsere Kunden mit diesen Wünschen und haben definiert: # Wenn wir der beste MX für einen Rechner sind, versuche es direkt # anstatt einen lokalen Konfigurationsfehler zu generieren. OwTrue Auf diesem Weg liefern Gegenstellen direkt zu dir, ohne die Kundenverbindung zu versuchen. Dann sendest du zu deinem Kunden. Das funktioniert nur für Rechner, du musst also deinen Kunden dazu bringen, ihre E-Mail Maschine customer.com zu nennen, sowie hostname.customer.com im DNS. Setze einfach einen A-Eintrag in den DNS für customer.com. .... [[mail-advanced]] == Weiterführende Themen Dieser Abschnitt behandelt kompliziertere Themen wie E-Mail-Konfiguration und Einrichtung von E-Mail für eine ganze Domäne. [[mail-config]] === Grundlegende Konfiguration Mit der Software im Auslieferungszustand sollte es möglich sein, E-Mails an externe Rechner zu senden, vorausgesetzt [.filename]#/etc/resolv.conf# ist konfiguriert, oder das Netzwerk hat Zugriff auf einen konfigurierten DNS-Server. Um E-Mails an den MTA auf dem Rechner auszuliefern, stehen zwei Möglichkeiten zur Auswahl: * Betreiben Sie einen DNS-Server für die Domäne. * Lassen Sie die E-Mails direkt über den FQDN des Rechners ausliefern. Um E-Mails direkt zu einem Rechner geliefert zu bekommen, wird eine permanente statische IP-Adresse (keine dynamische IP-Adresse) benötigt. Befindet sich das System hinter einer Firewall, muss diese den SMTP-Verkehr weiterleiten. Um E-Mails direkt am Rechner zu empfangen, muss eines der folgenden Dinge konfiguriert werden: * Vergewissern Sie sich, dass der MX-Eintrag mit der kleinsten Nummer im DNS auf die statische IP-Adresse des Rechners zeigt. * Stellen Sie sicher, dass für den Rechner kein MX-Eintrag im DNS existiert. Jede der erwähnten Konfigurationsmöglichkeiten erlaubt es, E-Mails direkt auf dem Rechner zu empfangen. Versuchen Sie das: [source,shell] .... # hostname example.FreeBSD.org # host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX .... In diesem Beispiel sollte es funktionieren, E-Mails direkt an mailto:yourlogin@example.FreeBSD.org[yourlogin@example.FreeBSD.org] zu senden, vorausgesetzt dass Sendmail auf `example.FreeBSD.org` korrekt läuft. In diesem Beispiel: [source,shell] .... # host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX example.FreeBSD.org mail is handled (pri=10) by devnull.FreeBSD.org .... Hier wird jede an den Rechner `example.FreeBSD.org` gesandte E-Mail auf `hub` unter dem gleichen Benutzernamen gesammelt, anstatt diese direkt zu Ihrem Rechner zu senden. Die obige Information wird von einem DNS-Server verwaltet. Der DNS-Eintrag, der die Information zum E-Mail-Routing enthält, ist der MX-Eintrag. Existiert kein MX-Eintrag, werden E-Mails direkt über die IP-Adresse an den Rechner geliefert. Der MX-Eintrag für `freefall.FreeBSD.org` sah einmal so aus: [.programlisting] .... freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com .... `freefall` hatte viele MX-Einträge. Die kleinste MX-Nummer definiert de Rechner, der die E-Mails direkt empfängt, wobei die anderen Rechner temporär E-Mails in Warteschlangen einreihen, falls `freefall` beschäftigt oder unerreichbar ist. Es ist sehr sinnvoll, dass stellvertretende MX-Seiten separate Internet-Verbindungen verwenden. Ihr ISP kann diesen Dienst zur Verfügung stellen. [[mail-domain]] === E-Mails für eine Domäne Wird ein MTA für ein Netzwerk konfiguriert, dann sollte jede E-Mail die an einen Rechner in dieser Domäne geschickt wird, an den MTA umgeleitet werden, damit die Benutzer ihre E-Mails vom zentralen Mail-Server empfangen können. Am einfachsten ist es, wenn Accounts mit gleichen _Benutzernamen_ sowohl auf dem MTA, als auch auf dem System mit dem MUA existieren. Verwenden Sie man:adduser[8], um Benutzerkonten anzulegen. Der MTA muss auf jeder Workstation im Netzwerk als der zuständige Rechner für den E-Mail-Austausch gekennzeichnet werden. Dies wird in der DNS-Konfiguration über den MX-Eintrag gesteuert: [.programlisting] .... example.FreeBSD.org A 204.216.27.XX ; Workstation MX 10 devnull.FreeBSD.org ; Mailhost .... Diese Einstellung wird E-Mails für die Workstations zum MTA weiterleiten, egal wo der A-Eintrag hinzeigt. Die E-Mails werden zum MX-Rechner gesendet. Diese Einstellung muss auf dem DNS-Server konfiguriert werden. Besitzt das Netzwerk keinen eigenen DNS-Server, kontaktieren Sie Ihren ISP oder DNS-Verwalter. Im Folgenden ist ein Beispiel für virtuelles E-Mail-Hosting. Nehmen wir an, dass für einen Kunden mit der Domäne `customer1.org`, alle E-Mails für `customer1.org` an `mail.myhost.com` gesendet werden sollen. Der entsprechende DNS-Eintrag sollte wie folgt aussehen: [.programlisting] .... customer1.org MX 10 mail.myhost.com .... Wenn für die Domäne nur E-Mails verarbeitet werden sollen, wird für `customer1.org` _kein_ `A`-Eintrag benötigt. Allerdings wird ein `ping` gegen `customer1.org` nur dann funktionieren, wenn ein `A`-Eintrag existiert. Teilen Sie dem MTA mit, für welche Domänen bzw. Hostnamen Post entgegengenommen werden soll. Die beiden folgenden Methoden funktionieren für Sendmail: * Fügen Sie die Rechnernamen in [.filename]#/etc/mail/local-host-names# hinzu, wenn `FEATURE(use_cw_file)` verwendet wird. * Fügen Sie eine Zeile `Cwyour.host.com` in [.filename]#/etc/sendmail.cf# hinzu. [[outgoing-only]] == Ausgehende E-Mail über einen Relay versenden In vielen Fällen möchte man E-Mail nur über einen Relay verschicken. Zum Beispiel: * Der Rechner ist ein Arbeitsplatzrechner und benutzt Programme wie man:mail[1] über ein Relay des ISP. * Ein Server, der E-Mails nicht selbst verarbeitet, soll alle E-Mails zu einem Relay schicken. Obwohl jeder MTA diese Aufgabe erfüllen kann, ist es oft schwierig einen vollwertigen MTA so zu konfigurieren, dass er lediglich ausgehende E-Mails weiterleitet. Es ist übertrieben, Programme wie Sendmail und Postfix nur für diesen Zweck einzusetzen. Weiterhin kann es sein, dass die Bestimmungen des Internetzugangs es verbieten, einen eigenen Mail-Server zu betreiben. Um die hier beschriebenen Anforderungen zu erfüllen, installieren Sie einfach den Port package:mail/ssmtp[]: [source,shell] .... # cd /usr/ports/mail/ssmtp # make install replace clean .... Nach der Installation kann package:mail/ssmtp[] über [.filename]#/usr/local/etc/ssmtp/ssmtp.conf# konfiguriert werden: [.programlisting] .... root=yourrealemail@example.com mailhub=mail.example.com rewriteDomain=example.com hostname=_HOSTNAME_ .... Verwenden Sie eine gültige E-Mail-Adresse für `root`. Geben Sie für `mail.example.com` den Mail-Relay des ISPs an. Einige ISPs nennen den Relay "Postausgangsserver" oder "SMTP-Server". Deaktivieren Sie Sendmail, einschließlich des Services für den Postausgang. Details finden Sie in <>. package:mail/ssmtp[] verfügt über weitere Optionen. Die Beispiele in [.filename]#/usr/local/etc/ssmtp# oder die Manualpage von ssmtp enthalten weitere Informationen. Wird ssmtp wie hier beschrieben eingerichtet, können Anwendungen E-Mails von dem lokalen Rechner verschicken. Man verstößt damit auch nicht gegen Bestimmungen des ISPs und läuft nicht Gefahr, dass der Rechner zum Versenden von Spam missbraucht wird. [[SMTP-dialup]] == E-Mail über Einwahl-Verbindungen Wird eine feste IP-Adresse verwendet, müssen die Standardeinstellungen wahrscheinlich gar nicht geändert werden. Stellen Sie den Hostnamen auf den entsprechend zugeordneten Internetnamen ein und Sendmail übernimmt das Übrige. Bei der Verwendung einer dynamisch zugewiesenen IP-Adresse und einer PPP-Wählverbindung mit dem Internet, hat man in der Regel ein Postfach auf dem Mailserver des ISP. In diesem Beispiel ist die Domäne des ISP `example.net`, der Benutzername ist `user`, der Rechnername ist `bsd.home` und der ISP erlaubt es, `relay.example.net` als Mail-Relayhost zu benutzen. Um Mails aus der Mailbox des ISPs abzuholen, muss ein gesondertes Programm aus der Ports-Sammlung installiert werden. package:mail/fetchmail[] ist eine gute Wahl, weil es viele verschiedene Protokolle unterstützt. Für gewöhnlich stellt der ISPPOP zur Verfügung. Falls User-PPP verwendet wird, können durch folgenden Eintrag in [.filename]#/etc/ppp/ppp.linkup# E-Mails automatisch abgerufen werden, sobald eine Verbindung zum Netz aufgebaut wird: [.programlisting] .... MYADDR: !bg su user -c fetchmail .... Wird Sendmail benutzt, um E-Mails an nicht-lokale Benutzer zu versenden, konfigurieren Sie es so, dass die Warteschlange abgearbeitet wird, sobald eine Verbindung mit dem Internet besteht. Um dies zu erreichen, müssen folgende Zeilen nach dem `fetchmail`-Eintrag in [.filename]#/etc/ppp/ppp.linkup# hinzugefügt werden. [.programlisting] .... !bg su user -c "sendmail -q" .... In diesem Beispiel existiert auf `bsd.home` ein Benutzer `user`. Erstellen Sie auf `bsd.home` im Heimatverzeichnis von `user` die Datei [.filename]#.fetchmailrc# mit folgender Zeile: [.programlisting] .... poll example.net protocol pop3 fetchall pass MySecret; .... Diese Datei sollte für niemandem außer `user` lesbar sein, weil sie das Passwort `MySecret` enthält. Um Mails mit dem richtigen `from:`-Header zu versenden, müssen Sie Sendmail so konfigurieren, dass es mailto:user@example.net[user@example.net] und nicht mailto:user@bsd.home[user@bsd.home] benutzen soll und das alle Mails über `relay.example.net` versendet werden, um eine schnellere Übertragung von Mails zu gewährleisten. Die folgende [.filename]#.mc# sollte ausreichen: [.programlisting] .... VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`example.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.example.net') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl .... Im vorherigen Abschnitt finden Sie Details dazu, wie Sie diese Datei in das Format [.filename]#sendmail.cf# konvertieren können. Vergessen Sie nicht, Sendmail neu zu starten, nachdem [.filename]#sendmail.cf# verändert wurde. [[SMTP-Auth]] == SMTP-Authentifizierung Die Konfiguration von SMTP-Authentifizierung auf dem MTA bietet einige Vorteile. Die erforderliche Authentifizierung erhöht die Sicherheit von Sendmail und mobilen Benutzern, die auf entfernten Rechnern arbeiten. Diese Benutzer können denselben MTA verwenden, ohne jedes Mal das Benutzerprogramm neu konfigurieren zu müssen. [.procedure] . Installieren Sie package:security/cyrus-sasl2[] aus der Ports-Sammlung. Dieser Port verfügt über einige Optionen, die während der Übersetzung festgelegt werden. Für die in diesem Abschnitt beschriebene Methode zur SMTP-Authentifizierung muss die Option `LOGIN` aktiviert werden. . Nach der Installation von package:security/cyrus-sasl2[] editieren Sie [.filename]#/usr/local/lib/sasl2/Sendmail.conf#. Erstellen Sie die Datei, wenn sie nicht existiert und fügen Sie die folgende Zeile hinzu: + [.programlisting] .... pwcheck_method: saslauthd .... . Als nächstes installieren Sie package:security/cyrus-sasl2-saslauthd[], und fügen die folgende Zeile in [.filename]#/etc/rc.conf# ein: + [.programlisting] .... saslauthd_enable="YES" .... + Abschließend starten Sie den saslauthd-Dämon: + [source,shell] .... # service saslauthd start .... + Dieser Dämon agiert als Broker zwischen Sendmail und der FreeBSD-[.filename]#passwd#-Datenbank. Dadurch müssen zum Versenden von E-Mails keine zusätzlichen Accounts und Passwörter angelegt werden. Die Benutzer verwenden dasselbe Passwort zum Anmelden wie zum Verschicken von E-Mails. . Fügen Sie danach in [.filename]#/etc/make.conf# die folgenden Zeilen hinzu: + [.programlisting] .... SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDADD=/usr/local/lib/libsasl2.so .... + Beim Übersetzen von Sendmail werden damit die package:cyrus-sasl2[]-Bibliotheken benutzt. Stellen Sie daher vor dem Übersetzen von Sendmail sicher, dass package:cyrus-sasl2[] installiert ist. . Übersetzen Sie Sendmail mit den nachstehenden Kommandos: + [source,shell] .... # cd /usr/src/lib/libsmutil # make cleandir && make obj && make # cd /usr/src/lib/libsm # make cleandir && make obj && make # cd /usr/src/usr.sbin/sendmail # make cleandir && make obj && make && make install .... + Die Übersetzung sollte keine Probleme bereiten, wenn [.filename]#/usr/src# nicht umfangreich verändert wurde und die benötigten Bibliotheken installiert sind. . Nachdem Sendmail übersetzt und installiert wurde, editieren Sie [.filename]#/etc/mail/freebsd.mc# beziehungsweise die lokale [.filename]#.mc#-Datei. Viele Administratoren verwenden die Ausgabe von man:hostname[1], um der [.filename]#.mc# einen eindeutigen Namen zu geben. Fügen Sie die folgenden Zeilen hinzu: + [.programlisting] .... dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl .... + Diese Anweisungen konfigurieren die Methoden, die Sendmail zur Authentifizierung von Benutzern verwendet. Lesen Sie die Sendmail Dokumentation, wenn eine andere Methode als `pwcheck` verwendet werden soll. . Abschließend rufen Sie man:make[1] in [.filename]#/etc/mail# auf. Damit wird aus der [.filename]#.mc#-Datei eine neue [.filename]#.cf#-Datei erzeugt. Der Name ist entweder [.filename]#freebsd.cf# oder der Name der lokalen [.filename]#.mc#-Datei. `make install restart` installiert die Datei nach [.filename]#/etc/mail/sendmail.cf# und startet Sendmail neu. Weitere Informationen zu diesem Vorgang entnehmen Sie bitte [.filename]#/etc/mail/Makefile#. Um die Konfiguration zu testen, verwenden Sie einen MUA, um eine Testnachricht zu senden. Mail-Benutzerprogramm das Passwort für die Authentifizierung ein und versenden Sie zum Testen eine E-Mail. Zur Fehlersuche, setzen Sie den `LogLevel` von Sendmail auf `13` und untersuchen die Fehlermeldungen in [.filename]#/var/log/maillog#. Weitere Information finden Sie unter http://www.sendmail.org/~ca/email/auth.html[ SMTP-Authentifizierung]. [[mail-agents]] == E-Mail-Programme Anwendungen, die E-Mails versenden und empfangen, werden als E-Mail-Programme oder Mail-User-Agents (MUA) bezeichnet. Mit der Entwicklung und Ausbreitung von E-Mail wachsen auch die E-Mail-Programme und bieten Benutzern mehr Funktionen und höhere Flexibilität. Die Kategorie `mail` der FreeBSD Ports-Sammlung enthält zahlreiche E-Mail-Programme. Dazu gehören grafische Programme, wie beispielsweise Evolution oder Balsa und Konsolen basierte Programme wie mutt oder alpine. [[mail-command]] === `mail` Das standardmäßig unter FreeBSD installierte E-Mail-Programm ist man:mail[1]. Das Programm ist konsolenorientiert und enthält alle Funktionen, die zum Versand und Empfang textbasierter E-Mails erforderlich sind. Es bietet eine begrenzte Unterstützung für Anhänge und kann auf lokale Postfächer zugreifen. `mail` kann nicht direkt auf POP- oder IMAP-Server zugreifen. Entfernte Postfächer können aber mit einer Anwendung wie fetchmail in eine lokale [.filename]#mbox# geladen werden. Um E-Mails zu versenden oder zu empfangen, starten Sie einfach `mail` wie im nachstehenden Beispiel: [source,shell] .... % mail .... `mail` liest automatisch den Inhalt des Benutzer-Postfachs im Verzeichnis [.filename]#/var/mail#. Sollte das Postfach leer sein, beendet sich `mail` mit der Nachricht, dass keine E-Mails vorhanden sind. Wenn E-Mails vorhanden sind, wird die Benutzeroberfläche gestartet und eine Liste der E-Mails angezeigt. Die E-Mails werden automatisch nummeriert wie im folgenden Beispiel gezeigt: [source,shell] .... Mail version 8.1 6/6/93. Type ? for help. "/var/mail/marcs": 3 messages 3 new >N 1 root@localhost Mon Mar 8 14:05 14/510 "test" N 2 root@localhost Mon Mar 8 14:05 14/509 "user account" N 3 root@localhost Mon Mar 8 14:05 14/509 "sample" .... Einzelne Nachrichten können nun durch Eingabe von kbd:[t] gefolgt von der Nummer der Nachricht gelesen werden. Im nachstehenden Beispiel wird die erste E-Mail gelesen: [source,shell] .... & t 1 Message 1: From root@localhost Mon Mar 8 14:05:52 2004 X-Original-To: marcs@localhost Delivered-To: marcs@localhost To: marcs@localhost Subject: test Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST) From: root@localhost (Charlie Root) Das ist eine Test-Nachricht. Antworte bitte! .... Wie in diesem Beispiel zu sehen ist, wird die Nachricht zusammen mit dem vollständigen Nachrichtenkopf angezeigt. Um die Liste der E-Mails erneut zu sehen, drücken Sie wieder die Taste kbd:[h]. Um auf eine E-Mail zu antworten, benutzen Sie entweder kbd:[R] oder kbd:[r]. kbd:[R] weist `mail` an, dem Versender der Nachricht zu antworten, während mit kbd:[r] allen Empfängern der Nachricht geantwortet wird. Den Kommandos kann die Zahl der E-Mail, auf die geantwortet werden soll, mitgegeben werden. Nachdem die Antwort E-Mail verfasst worden ist, sollte die Eingabe mit einem einzelnen Punkt (kbd:[.]) auf einer neuen Zeile abgeschlossen werden. Hierzu ein Beispiel: [source,shell] .... & R 1 To: root@localhost Subject: Re: test Danke, ich habe deine E-Mail erhalten. . EOT .... Neue E-Mails können mit kbd:[m], gefolgt von der E-Mail-Adresse des Empfängers verschickt werden. Mehrere Empfänger werden durch Kommata (kbd:[,]) getrennt, angegeben. Der Betreff (subject) der Nachricht kann dann, gefolgt vom Inhalt der Nachricht eingegeben werden. Die Nachricht wird dann mit einem einzelnen Punkt (kbd:[.]) auf einer neuen Zeile abgeschlossen. [source,shell] .... & mail root@localhost Subject: Ich habe die E-Mails im Griff! Jetzt kann ich E-Mails versenden und empfangen ... :) . EOT .... Die Taste kbd:[?] zeigt zu jeder Zeit einen Hilfetext an. Lesen Sie man:mail[1], wenn Sie weitere Hilfe zur Benutzung von `mail` erhalten möchten. [NOTE] ==== man:mail[1] wurde nicht für den Umgang mit Anhängen entworfen und kann daher sehr schlecht mit Anhängen umgehen. Neuere MUAs gehen wesentlich besser mit Anhängen um. Benutzer, die `mail` bevorzugen, werden vielleicht den Port package:converters/mpack[] zu schätzen wissen. ==== [[mutt-command]] === mutt mutt ist ein leistungsfähiges E-Mail-Programm mit vielen Funktionen, darunter: * mutt kann den Verlauf einer Diskussion (threading) darstellen. * Unterstützung von PGP für das digitale signieren und verschlüsseln von E-Mail. * MIME-Unterstützung. * Maildir-Unterstützung. * mutt lässt sich im höchsten Maße an lokale Bedürfnisse anpassen. Mehr über mutt erfahren Sie auf der Seite http://www.mutt.org[ http://www.mutt.org]. mutt kann über den Port package:mail/mutt[] installiert werden. Nachdem der Port installiert ist, kann mutt mit dem folgenden Befehl gestartet werden: [source,shell] .... % mutt .... mutt liest automatisch den Inhalt des Benutzer-Postfachs im Verzeichnis [.filename]#/var/mail#. Sind keine E-Mails vorhanden, wartet mutt auf Benutzereingaben. Das folgende Beispiel zeigt, wie mutt eine Nachrichten-Liste darstellt: image::mutt1.png[] Um eine E-Mail zu lesen, wählen Sie die Nachricht einfach mit den Pfeiltasten aus und drücken kbd:[Enter]. mutt zeigt E-Mails wie folgt an: image::mutt2.png[] Änlich wie man:mail[1], kann auch mutt verwendet werden, um nur dem Absender, oder auch allen anderen Empfängern zu antworten. Um nur dem Absender der E-Mail zu antworten, drücken Sie kbd:[r]. Um sowohl dem Absender, als auch allen anderen Empfängern zu antworten, drücken Sie kbd:[g]. [NOTE] ==== Zum Erstellen oder zum Beantworten von E-Mails ruft mutt den Editor man:vi[1] auf. Jeder Benutzer kann diese Einstellung anpassen, indem die Variable `editor` in [.filename]#.muttrc# im Heimatverzeichnis gesetzt wird, oder die Umgebungsvariable `EDITOR` entsprechend angepasst wird. Weitere Informationen zur Konfiguration von mutt finden Sie unter http://www.mutt.org/[ http://www.mutt.org/]. ==== Drücken Sie kbd:[m], um eine neue Nachricht zu verfassen. Nachdem der Betreff (subject) eingegeben wurde, startet mutt den man:vi[1] und die Nachricht kann verfasst werden. Wenn Sie fertig sind, speichern Sie die Nachricht und verlassen den man:vi[1]. mutt wird dann wieder aktiv und zeigt eine Zusammenfassung der zu sendenden Nachricht an. Drücken Sie kbd:[y], um die E-Mail zu versenden. Der nachstehende Bildschirmabzug zeigt die Zusammenfassung der E-Mail: image::mutt3.png[] mutt verfügt über eine umfangreiche Hilfestellung. Aus fast jedem Menü können Hilfeseiten mit kbd:[?] aufgerufen werden. In der oberen Statuszeile werden zudem die verfügbaren Tastenkombinationen angezeigt. [[alpine-command]] === alpine alpine wendet sich an Anfänger bietet aber ebenfalls einige Funktionen für Profis. [WARNING] ==== In der Vergangenheit wurden in alpine mehrere Schwachstellen gefunden. Die Schwachstellen gestatteten entfernten Benutzern, durch das Versenden einer besonders verfassten E-Mail, Programme auf dem lokalen System laufen zu lassen. Alle _bekannten_ Schwachstellen sind beseitigt worden, doch wird im Quellcode von alpine ein sehr riskanter Programmierstil verwendet, sodass der FreeBSD-Security-Officer von weiteren unbekannten Schwachstellen ausgeht. Benutzer installieren alpine auf eigene Verantwortung! ==== Der Port package:mail/alpine[] enthält die aktuelle Version von alpine. Nach der Installation können Sie alpine mit dem nachstehenden Kommando starten: [source,shell] .... % alpine .... Beim ersten Start von alpine, zeigt das Programm eine Seite mit einer kurzen Einführung an. Um die alpine-Benutzer zu zählen, bitten die Entwickler auf dieser Seite um eine anonyme E-Mail. Sie können diese anonyme E-Mail senden, indem Sie kbd:[Enter] drücken oder den Begrüßungsbildschirm mit der Taste kbd:[E] verlassen, ohne die anonyme E-Mail zu senden. Der Begrüßungsbildschirm sieht wie folgt aus: image::pine1.png[] Nach dem Begrüßungsbildschirm wird das Hauptmenü dargestellt, das sich mit den Pfeiltasten bedienen lässt. Über Tastenkombinationen können aus dem Hauptmenü neue E-Mails erstellt, Postfächer angezeigt und das Adressbuch verwaltet werden. Unterhalb des Menüs werden die Tastenkombinationen für die verfügbaren Aktionen angezeigt. In der Voreinstellung öffnet alpine das Verzeichnis [.filename]#inbox#. Die Taste kbd:[I] oder der Menüpunkt [.guimenuitem]#MESSAGE INDEX# führt zu einer Nachrichten-Liste: image::pine2.png[] Die Liste zeigt die Nachrichten im Arbeitsverzeichnis. Sie können Nachrichten mit den Pfeiltasten markieren. Um eine Nachricht zu lesen, drücken Sie kbd:[Enter]. image::pine3.png[] Im nächsten Bildschirmabzug sehen Sie, wie alpine eine Nachricht darstellt. Die unteren Bildschirmzeilen zeigen die verfügbaren Tastenkombinationen. Mit kbd:[r] können Sie zum Beispiel auf die gerade angezeigte Nachricht antworten. image::pine4.png[] Zum Antworten auf eine E-Mail wird in alpine der Editor pico, der mit installiert wird, benutzt. pico ist leicht zu bedienen und gerade für Anfänger besser geeignet als man:vi[1] oder man:mail[1]. Die Antwort wird mit der Tastenkombination kbd:[Ctrl+X] versendet. Vor dem Versand bittet alpine noch um eine Bestätigung. image::pine5.png[] Über den Menüpunkt [.guimenuitem]#SETUP# des Hauptmenüs können Sie alpine an Ihre Bedürfnisse anpassen. Erläuterungen dazu finden Sie auf der Seite http://www.washington.edu/pine/[http://www.washington.edu/pine/]. [[mail-fetchmail]] == E-Mails mit fetchmail abholen fetchmail ist ein vollwertiger IMAP- und POP-Client. Mit fetchmail können Benutzer E-Mails von entfernten IMAP- und POP-Servern in leichter zugängliche lokale Postfächer laden. fetchmail wird aus dem Port package:mail/fetchmail[] installiert. Das Programm bietet unter anderem folgende Funktionen: * fetchmail beherrscht die Protokolle POP3, APOP, KPOP, IMAP, ETRN und ODMR. * E-Mails können mit SMTP weiterverarbeitet werden. Dadurch ist garantiert, dass Filter, Weiterleitungen und Aliase weiterhin funktionieren. * Das Programm kann als Dienst laufen und periodisch neue Nachrichten abrufen. * fetchmail kann mehrere Postfächer abfragen und je nach Konfiguration die E-Mails an verschiedene lokale Benutzer zustellen. Dieser Abschnitt erklärt einige grundlegende Funktionen von fetchmail. Das Programm benötigt eine Konfigurationsdatei [.filename]#.fetchmailrc# im Heimatverzeichnis des Benutzers. In dieser Datei werden Informationen über Server wie auch Benutzerdaten und Passwörter hinterlegt. Wegen des kritischen Inhalts dieser Datei ist es ratsam, diese nur für den Benutzer lesbar zu machen: [source,shell] .... % chmod 600 .fetchmailrc .... Die folgende [.filename]#.fetchmailrc# zeigt, wie das Postfach eines einzelnen Benutzers mit POP heruntergeladen wird. fetchmail wird angewiesen, eine Verbindung zu `example.com` herzustellen und sich dort als Benutzer `joesoap` mit dem Passwort `XXX` anzumelden. Das Beispiel setzt voraus, dass der Benutzer `joesoap` auch auf dem lokalen System existiert. [.programlisting] .... poll example.com protocol pop3 username "joesoap" password "XXX" .... Im folgenden Beispiel werden mehrere POP- und IMAP-Server benutzt. Wo notwendig, werden E-Mails auf andere lokale Konten umgeleitet: [.programlisting] .... poll example.com proto pop3: user "joesoap", with password "XXX", is "jsoap" here; user "andrea", with password "XXXX"; poll example2.net proto imap: user "john", with password "XXXXX", is "myth" here; .... fetchmail kann als Dämon gestartet werden. Verwendet wird dazu die Kommandozeilenoption `-d` gefolgt von einer Zeitspanne in Sekunden, die angibt, wie oft die Server aus [.filename]#.fetchmailrc# abgefragt werden sollen. Mit dem nachstehenden Befehl fragt fetchmail die Server alle 600 Sekunden ab: [source,shell] .... % fetchmail -d 600 .... Mehr über fetchmail erfahren Sie auf der Seite http://www.fetchmail.info/[ http://www.fetchmail.info/]. [[mail-procmail]] == E-Mails mit procmail filtern procmail ist ein mächtiges Werkzeug, mit dem sich eingehende E-Mails filtern lassen. Benutzer können Regeln für eingehende E-Mails definieren, die E-Mails zu anderen Postfächern oder anderen E-Mail-Adressen umleiten. procmail befindet sich im Port package:mail/procmail[]. procmail kann leicht in die meisten MTAs integriert werden. Lesen Sie dazu bitte die Dokumentation des verwendeten MTAs. Alternativ kann procmail in das E-Mail-System eingebunden werden, indem die nachstehende Zeile in die Datei [.filename]#.forward# im Heimatverzeichnis eines Benutzers eingefügt wird: [.programlisting] .... "|exec /usr/local/bin/procmail || exit 75" .... Der folgende Abschnitt zeigt einige einfache procmail-Regeln sowie eine kurze Beschreibung dessen, was sie tun. Regeln müssen in [.filename]#.procmailrc# im Heimatverzeichnis des Benutzers eingefügt werden. Den Großteil dieser Regeln finden Sie auch in man:procmailex[5]. Um E-Mails von mailto:user@example.com[user@example.com] an die externe Adresse mailto:goodmail@example2.com[goodmail@example2.com] weiterzuleiten: [.programlisting] .... :0 * ^From.*user@example.com ! goodmail@example2.com .... Um E-Mails, die kürzer als 1000 Bytes sind, an mailto:goodmail@example2.com[goodmail@example2.com] weiterzuleiten: [.programlisting] .... :0 * < 1000 ! goodmail@example2.com .... Um E-Mails, die an mailto:alternate@example.com[alternate@example.com] geschickt werden, im Postfach [.filename]#alternate# zu speichern: [.programlisting] .... :0 * ^TOalternate@example.com alternate .... Um E-Mails, die im Betreff `Spam` enthalten, nach [.filename]#/dev/null# zu verschieben: [.programlisting] .... :0 ^Subject:.*Spam /dev/null .... Zuletzt ein nützliches Rezept, das eingehende E-Mails von den `FreeBSD.org`-Mailinglisten in ein separates Postfach für jede Liste einsortiert: [.programlisting] .... :0 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG { LISTNAME=${MATCH} :0 * LISTNAME??^\/[^@]+ FreeBSD-${MATCH} } .... diff --git a/documentation/content/el/books/handbook/mail/_index.adoc b/documentation/content/el/books/handbook/mail/_index.adoc index a72c307cce..b8f633de3f 100644 --- a/documentation/content/el/books/handbook/mail/_index.adoc +++ b/documentation/content/el/books/handbook/mail/_index.adoc @@ -1,1136 +1,1136 @@ --- title: Κεφάλαιο 28. Ηλεκτρονικό Ταχυδρομείο part: Μέρος IV. Δικτυακές Επικοινωνίες prev: books/handbook/ppp-and-slip next: books/handbook/network-servers showBookMenu: true weight: 33 path: "/books/handbook/" --- [[mail]] = Ηλεκτρονικό Ταχυδρομείο :doctype: book :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: 28 :partnums: :source-highlighter: rouge :experimental: :images-path: books/handbook/mail/ ifdef::env-beastie[] ifdef::backend-html5[] :imagesdir: ../../../../images/{images-path} endif::[] ifndef::book[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] toc::[] endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] toc::[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [[mail-synopsis]] == Σύνοψη Το "ηλεκτρονικό ταχυδρομείο", ευρύτερα γνωστό ως email, είναι στις μέρες μας μια από τις πλέον διαδεδομένες μορφές επικοινωνίας. Το κεφάλαιο αυτό παρέχει μια βασική εισαγωγή στη λειτουργία ενός διακομιστή email στο FreeBSD, καθώς και μια εισαγωγή στη διαδικασία αποστολής και λήψης email στο FreeBSD. Ωστόσο η αναφορά αυτή δεν πρέπει να θεωρηθεί πλήρης, καθώς υπάρχουν ακόμα αρκετοί παράγοντες που πρέπει να ληφθούν υπόψιν και έχουν εδώ παραλειφθεί. Για πιο πλήρη ανάλυση του θέματος, ο αναγνώστης παραπέμπεται στα πολλά εξαιρετικά βιβλία που αναφέρονται στο crossref:bibliography[bibliography,Βιβλιογραφία]. Αφού διαβάσετε αυτό το κεφάλαιο, θα ξέρετε: * Το λογισμικό που χρησιμοποιείται στην αποστολή και λήψη ηλεκτρονικού ταχυδρομείου. * Που βρίσκονται τα βασικά αρχεία ρυθμίσεων του sendmail στο FreeBSD. * Τη διαφορά μεταξύ απομακρυσμένων και τοπικών θυρίδων ταχυδρομείου (mailboxes). * Πως να εμποδίσετε ανεπιθύμητους spammers από το να χρησιμοποιήσουν τον δικό σας εξυπηρετητή email ως αναμεταδότη. * Πως να εγκαταστήσετε και να ρυθμίσετε ένα εναλλακτικό Αντιπρόσωπο Μεταφοράς Ταχυδρομείου (Mail Transfer Agent) στο σύστημα σας, αντικαθιστώντας έτσι το sendmail. * Πως να αντιμετωπίσετε συνηθισμένα προβλήματα στον διακομιστή ταχυδρομείου. * Πως να χρησιμοποιήσετε το SMTP με το UUCP. * Πως να ρυθμίσετε το σύστημα σας μόνο για αποστολή email. * Πως να χρησιμοποιήσετε το email μέσω επιλογικής (dialup) σύνδεσης. * Πως να ρυθμίσετε πιστοποίηση αυθεντικότητας στο SMTP για πρόσθετη ασφάλεια. * Πως να εγκαταστήσετε και να χρησιμοποιήσετε μια εφαρμογή αποστολής και λήψης email για χρήστες, όπως το mutt. * Πως να κατεβάσετε το email σας από ένα απομακρυσμένο διακομιστή POP ή IMAP. * Πως να εφαρμόσετε φίλτρα και κανόνες στην εισερχόμενη αλληλογραφία σας, με αυτόματο τρόπο. Πριν διαβάσετε αυτό το κεφάλαιο, θα πρέπει: * Να ρυθμίσετε σωστά τη σύνδεση του δικτύου σας (crossref:advanced-networking[advanced-networking,Προχωρημένα Θέματα Δικτύωσης]). * Να ρυθμίσετε σωστά τις πληροφορίες DNS για τον διακομιστή αλληλογραφίας σας (crossref:network-servers[network-servers,Εξυπηρετητές Δικτύου]). * Να γνωρίζετε πως να εγκαταστήσετε πρόσθετο λογισμικό τρίτου κατασκευαστή (crossref:ports[ports,Εγκατάσταση Εφαρμογών: Πακέτα και Ports]). [[mail-using]] == Χρησιμοποιώντας το Ηλεκτρονικό Ταχυδρομείο Σε κάθε ανταλλαγή ηλεκτρονικού ταχυδρομείου, συνεργάζονται πέντε βασικά τμήματα: Το <>, ο <>, το <>, μια <> και φυσικά ο <>. [[mail-mua]] === Το Πρόγραμμα Χρήστη Η κατηγορία αυτή περιλαμβάνει προγράμματα όπως τα mutt, alpine, elm, και `mail`, καθώς και προγράμματα που διαθέτουν GUI όπως είναι τα balsa, xfmail (για να δώσουμε μερικά παραδείγματα) και κάποια πιο "εξελιγμένα" όπως είναι οι φυλλομετρητές για το WWW. Τα προγράμματα αυτά, απλώς μεταβιβάζουν τις συναλλαγές ταχυδρομείου στον τοπικό <>, είτε καλώντας κάποιον από τους <> που είναι διαθέσιμοι, ή παραδίδοντας τις απευθείας μέσω TCP. [[mail-mta]] === Δαίμονας Εξυπηρετητή Mailhost Το FreeBSD έρχεται με το sendmail εγκατεστημένο από προεπιλογή, αλλά υποστηρίζει επίσης και μεγάλο αριθμό από άλλους δαίμονες ταχυδρομείου, περιλαμβανομένων και των: * exim * postfix * qmail Ο δαίμονας έχει συνήθως δύο λειτουργίες-είναι υπεύθυνος για τη λήψη εισερχόμενου mail, όπως επίσης και την παράδοση του εξερχόμενου mail. Όμως, _δεν είναι_ υπεύθυνος για τη συλλογή του mail με τη χρήση πρωτοκόλλων όπως τα POP ή IMAP για την ανάγνωση του ταχυδρομείου σας, ούτε επιτρέπει τη σύνδεση στις τοπικές θυρίδες τύπου [.filename]#mbox# ή Maildir. Πιθανόν να χρειαστείτε κάποιο επιπρόσθετο <> για αυτό το σκοπό. [WARNING] ==== Παλιότερες εκδόσεις του sendmail έχουν κάποια σοβαρά προβλήματα ασφαλείας, μέσω των οποίων μπορεί κάποιος εισβολέας να αποκτήσει τοπική ή απομακρυσμένη πρόσβαση στο μηχάνημα σας. Για να αποφύγετε προβλήματα τέτοιου είδους, βεβαιωθείτε ότι χρησιμοποιείτε κάποια πρόσφατη έκδοση. Εναλλακτικά, μπορείτε να εγκαταστήσετε κάποιο άλλο MTA από την crossref:ports[ports,Συλλογή των Ports του FreeBSD]. ==== [[mail-dns]] === Email και DNS Το Σύστημα Ονομασίας Περιοχών (DNS) και ο δαίμονας του, ο `named`, έχουν σημαντικό ρόλο στην παράδοση του email. Για την παράδοση του email από το ένα site σε ένα άλλο, ο δαίμονας του εξυπηρετητή θα ψάξει για το απομακρυσμένο site στο DNS, για να καθορίσει ποιος υπολογιστής λαμβάνει το email για το συγκεκριμένο προορισμό. Η διαδικασία αυτή συμβαίνει επίσης όταν ο δικός σας εξυπηρετητής λαμβάνει email από κάποιο απομακρυσμένο υπολογιστή. Το DNS είναι υπεύθυνο για την αντιστοίχηση ονομάτων υπολογιστών σε διευθύνσεις IP, όπως και για την αποθήκευση πληροφοριών που σχετίζονται με την παράδοση ηλεκτρονικού ταχυδρομείου, όπως οι εγγραφές MX. Η εγγραφή MX (Mail Exchanger) αναγνωρίζει ποιος υπολογιστής (ή υπολογιστές) θα είναι υπεύθυνος για τη λήψη ταχυδρομείου ενός συγκεκριμένου τομέα (domain). Αν δεν έχετε εγγραφή MX για τον υπολογιστή ή τον τομέα σας, το email θα παραδίδεται απευθείας στον υπολογιστή σας, με την προϋπόθεσή ότι έχετε εγγραφή τύπου A που να δείχνει στον υπολογιστή σας ή στην IP διεύθυνση του. Μπορείτε να δείτε τις εγγραφές MX για οποιοδήποτε τομέα, χρησιμοποιώντας την εντολή man:host[1], όπως φαίνεται στο παρακάτω παράδειγμα: [source,shell] .... % host -t mx FreeBSD.org FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org .... [[mail-receive]] === Λαμβάνοντας Mail Ο mailhost είναι υπεύθυνος για την λήψη mail που προορίζεται για τον τομέα σας. Θα συλλέξει όλο το mail που έρχεται προς τον τομέα, και θα το αποθηκεύσει είτε στο [.filename]#mbox# (την προεπιλεγμένη μέθοδο για αποθήκευση mail) ή σε μορφή Maildir, ανάλογα με τις ρυθμίσεις που έχετε κάνει. Από τη στιγμή που το mail έχει αποθηκευθεί, μπορείτε είτε να το διαβάσετε τοπικά, χρησιμοποιώντας εφαρμογές όπως το man:mail[1] ή το mutt, ή να το δείτε μέσω απομακρυσμένης σύνδεσης, χρησιμοποιώντας κάποιο πρωτόκολλο όπως το POP ή το IMAP. Αυτό σημαίνει ότι αν επιθυμείτε να διαβάζετε το mail σας μόνο τοπικά, δεν χρειάζεται να εγκαταστήσετε εξυπηρετητή POP ή IMAP. [[pop-and-imap]] ==== Πρόσβαση σε Απομακρυσμένες Θυρίδες μέσω POP και IMAP Για να έχετε απομακρυσμένη πρόσβαση στις θυρίδες ταχυδρομείου, είναι απαραίτητο να έχετε πρόσβαση σε ένα εξυπηρετητή POP ή IMAP. Τα πρωτόκολλα αυτά, επιτρέπουν στους χρήστες να συνδέονται στις θυρίδες τους από απόσταση, με μεγάλη ευκολία. Και τα δύο πρωτόκολλα (POP και IMAP) επιτρέπουν στους χρήστες απομακρυσμένη πρόσβαση στις θυρίδες τους, αλλά το IMAP προσφέρει αρκετά πλεονεκτήματα, ορισμένα από τα οποία φαίνονται παρακάτω: * Το IMAP μπορεί να αποθηκεύσει μηνύματα σε ένα απομακρυσμένο εξυπηρετητή, όπως επίσης και να τα ανακτήσει. * Το IMAP υποστηρίζει ταυτόχρονες ενημερώσεις. * Το IMAP μπορεί να φανεί εξαιρετικά χρήσιμο σε συνδέσεις χαμηλής ταχύτητας, καθώς επιτρέπει στους χρήστες να κατεβάσουν τη δομή των μηνυμάτων, χωρίς να κατεβάσουν το περιεχόμενο τους. Μπορεί επίσης να εκτελέσει εργασίες όπως εύρεση μηνυμάτων απευθείας στον εξυπηρετητή, ελαχιστοποιώντας με αυτό τον τρόπο τη μεταφορά δεδομένων μεταξύ των πελατών και των εξυπηρετητών. Για να εγκαταστήσετε ένα εξυπηρετητή POP ή IMAP θα πρέπει να ακολουθήσετε τα επόμενα βήματα: [.procedure] . Επιλέξτε ένα εξυπηρετητή IMAP ή POP που να εξυπηρετεί τις ανάγκες σας. Οι παρακάτω εξυπηρετητές POP και IMAP είναι αρκετά διαδεδομένοι και αποτελούν καλά παραδείγματα: ** qpopper ** teapop ** imap-uw ** courier-imap ** dovecot . Εγκαταστήστε το δαίμονα POP ή IMAP της επιλογής σας, από την Συλλογή των Ports. . Αν χρειάζεται, τροποποιήστε το αρχείο [.filename]#/etc/inetd.conf# για να φορτώσετε τον εξυπηρετητή POP ή IMAP. [WARNING] ==== Θα πρέπει να σημειώσουμε ότι τόσο το POP όσο και το IMAP μεταδίδουν πληροφορίες όπως το όνομα χρήστη και τον κωδικό σε μορφή απλού κειμένου. Αυτό σημαίνει ότι αν θέλετε να ασφαλίσετε τη μετάδοση πληροφοριών μέσω αυτών των πρωτοκόλλων, θα πρέπει να περάσετε αυτές τις συνδέσεις μέσω του man:ssh[1] (tunneling) ή να χρησιμοποιήσετε SSL. Η διαδικασία tunneling περιγράφεται με λεπτομέρεια στο crossref:security[security-ssh-tunneling,SSH Tunneling] και το SSL στο crossref:security[openssl,OpenSSL]. ==== [[local]] ==== Πρόσβαση σε Τοπικές Θυρίδες Ταχυδρομείου Μπορείτε να έχετε τοπική πρόσβαση στις θυρίδες ταχυδρομείου χρησιμοποιώντας απευθείας κάποιο πρόγραμμα αποστολής/λήψης (MUA) στον εξυπηρετητή που είναι αποθηκευμένες. Κατάλληλες εφαρμογές για αυτό το σκοπό είναι π.χ. το mutt ή το man:mail[1]. [[mail-host]] === Ο Εξυπηρετητής Mail Εξυπηρετητής mail θεωρείται ο υπολογιστής ο οποίος είναι υπεύθυνος για την παράδοση και λήψη mail για τον υπολογιστή σας, και ενδεχομένως για το δίκτυο σας. [[sendmail]] == Ρύθμιση του sendmail Το man:sendmail[8] είναι ο προεπιλεγμένος Αντιπρόσωπος Μεταφοράς Ταχυδρομείου (Mail Transfer Agent, MTA) στο FreeBSD. Δουλειά του είναι να δέχεται το email από τους Αντιπροσώπους Email Χρήστη (Mail User Agents, MUA) και να το παραδίδει στο κατάλληλο mailer που ορίζεται στο αρχείο ρυθμίσεων του. Το sendmail μπορεί επίσης να δεχθεί συνδέσεις δικτύου και να παραδώσει το mail σε τοπικές θυρίδες ή και σε κάποιο άλλο πρόγραμμα. Το sendmail χρησιμοποιεί τα ακόλουθα αρχεία ρυθμίσεων: [.informaltable] [cols="1,1", frame="none", options="header"] |=== | Όνομα Αρχείου | Λειτουργία |[.filename]#/etc/mail/access# |Η βάση δεδομένων πρόσβασης του sendmail. |[.filename]#/etc/mail/aliases# |Παρωνύμια (aliases) για τις θυρίδες (Mailboxes) |[.filename]#/etc/mail/local-host-names# |Λίστα των υπολογιστών για τους οποίους το sendmail δέχεται mail |[.filename]#/etc/mail/mailer.conf# |Ρυθμίσεις του προγράμματος mailer |[.filename]#/etc/mail/mailertable# |Πίνακας παραδόσεων του mailer |[.filename]#/etc/mail/sendmail.cf# |Το κεντρικό αρχείο ρυθμίσεων του sendmail |[.filename]#/etc/mail/virtusertable# |Πίνακας εικονικών χρηστών και περιοχών (domains) |=== === [.filename]#/etc/mail/access# Η βάση δεδομένων πρόσβασης καθορίζει ποιοι υπολογιστές ή διευθύνσεις IP έχουν πρόσβαση στον τοπικό εξυπηρετητή mail και τι είδους πρόσβαση έχουν. Η καταχώρηση ενός υπολογιστή μπορεί να έχει τις επιλογές `OK`, `REJECT`, `RELAY` ή απλά να μεταβιβάζει τον έλεγχο στη ρουτίνα διαχείρισης λαθών του sendmail με κάποιο συγκεκριμένο σφάλμα. Οι υπολογιστές που είναι καταχωρημένοι με την επιλογή `OK`, η οποία είναι και η προεπιλεγμένη, επιτρέπεται να στείλουν email σε αυτό τον υπολογιστή, εφόσον ο τελικός προορισμός του μηνύματος είναι το τοπικό μηχάνημα. Οι υπολογιστές που είναι καταχωρημένοι με την επιλογή `REJECT` απορρίπτονται για οποιαδήποτε επικοινωνία έχει να κάνει με μετάδοση mail. Οι υπολογιστές που είναι καταχωρημένοι με την επιλογή `RELAY`, έχουν τη δυνατότητα να στείλουν mail προς οποιαδήποτε κατεύθυνση μέσω του συγκεκριμένου εξυπηρετητή. .Ρύθμιση της Βάσης Δεδομένων Πρόσβασης του sendmail [example] ==== [.programlisting] .... cyberspammer.com 550 We do not accept mail from spammers FREE.STEALTH.MAILER@ 550 We do not accept mail from spammers another.source.of.spam REJECT okay.cyberspammer.com OK 128.32 RELAY .... ==== Σε αυτό το παράδειγμα έχουμε πέντε καταχωρήσεις. Οι διευθύνσεις που φαίνονται στην αριστερή πλευρά του πίνακα, επηρεάζονται από τη ενέργεια που φαίνεται στη δεξιά πλευρά. Τα πρώτα δύο παραδείγματα, επιστρέφουν ένα κωδικό σφάλματος στη ρουτίνα διαχείρισης λαθών του sendmail. Το μήνυμα εκτυπώνεται στον απομακρυσμένο υπολογιστή, όταν το mail που λαμβάνεται ανήκει σε κάποια από τις κατηγορίες της αριστερής πλευράς του πίνακα. Η επόμενη καταχώρηση απορρίπτει την παραλαβή mail από ένα συγκεκριμένο υπολογιστή στο Internet, τον `another.source.of.spam`. Η επόμενη καταχώρηση κάνει δεκτές τις συνδέσεις mail από τον υπολογιστή `okay.cyberspammer.com`, το όνομα του οποίου προσδιορίζεται ακριβέστερα σε σχέση με τη γραμμή `cyberspammer.com` που είδαμε παραπάνω. Γραμμές που καθορίζουν ονόματα με μεγαλύτερη ακρίβεια, έχουν προτεραιότητα σε σχέση με πιο ανακριβείς. Η τελευταία καταχώρηση επιτρέπει την αναμετάδοση (relaying) ηλεκτρονικού ταχυδρομείου από υπολογιστές με διευθύνσεις IP που ξεκινάνε με `128.32`. Οι υπολογιστές αυτοί, μπορούν να στείλουν mail μέσω του συγκεκριμένου εξυπηρετητή, το οποίο να κατευθύνεται σε άλλους εξυπηρετητές ταχυδρομείου. Σε περίπτωση ανανέωσης αυτού του αρχείου, θα πρέπει να εκτελέσετε την εντολή `make` στον κατάλογο [.filename]#/etc/mail/# για να ανανεώσετε τη βάση δεδομένων. === [.filename]#/etc/mail/aliases# Η βάση δεδομένων των παρωνυμίων (aliases), περιέχει μια λίστα από εικονικές θυρίδες ταχυδρομείου που επεκτείνονται σε άλλους χρήστες, αρχεία ή και άλλα παρωνύμια. Μερικά παραδείγματα χρήσης του [.filename]#/etc/mail/aliases# φαίνονται παρακάτω: .Παρωνύμια Mail [example] ==== [.programlisting] .... root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail" .... ==== Η μορφή του αρχείου είναι απλή. Το όνομα της θυρίδας βρίσκεται στην αριστερή πλευρά της άνω-κάτω τελείας, και επεκτείνεται στον προορισμό που βρίσκεται στη δεξιά πλευρά. Το πρώτο παράδειγμα, ορίζει ότι η θυρίδα του χρήστη `root` θα είναι στην πραγματικότητα η θυρίδα `localuser`. Για την θυρίδα αυτή, γίνεται ξανά αναζήτηση στη βάση δεδομένων των παρωνυμιών. Αν δεν βρεθεί άλλο όνομα που να ταιριάζει, το μήνυμα θα παραδοθεί στον τοπικό χρήστη `localuser`. Το επόμενο παράδειγμα δείχνει μια λίστα ταχυδρομείου. Τα μηνύματα που απευθύνονται στη θυρίδα `ftp-bugs`, κατευθύνονται σε τρεις τοπικές θυρίδες, τις `joe`, `eric` και `paul`. Σημειώστε ότι είναι δυνατόν να καθοριστεί μια απομακρυσμένη θυρίδα χρησιμοποιώντας τη μορφή mailto:user@example.com[user@example.com]. Το επόμενο παράδειγμα, δείχνει πως μπορεί να γίνει εγγραφή του mail σε ένα αρχείο, στη συγκεκριμένη περίπτωση το [.filename]#/dev/null#. Το τελευταίο παράδειγμα, δείχνει πως γίνεται η αποστολή mail προς ένα πρόγραμμα. Στο παράδειγμα αυτό, το μήνυμα γράφεται στην τυποποιημένη είσοδο (standard input) του προγράμματος [.filename]#/usr/local/bin/procmail# χρησιμοποιώντας ένα UNIX(R) pipe. Κάθε φορά που γίνεται ενημέρωση αυτού του αρχείου, θα πρέπει να εκτελείτε την εντολή `make` στον κατάλογο [.filename]#/etc/mail/#, ώστε να ενημερωθεί η βάση δεδομένων. === [.filename]#/etc/mail/local-host-names# Πρόκειται για μια λίστα από ονόματα υπολογιστών, την οποία το man:sendmail[8] θα δέχεται ως ονόματα για το τοπικό μηχάνημα. Τοποθετήστε σε αυτήν τα ονόματα των υπολογιστών ή των τομέων για τους οποίους θέλετε το sendmail να λαμβάνει mail. Για παράδειγμα, αν ο συγκεκριμένος εξυπηρετητής mail πρόκειται να λαμβάνει mail για τον τομέα `example.com` και για τον υπολογιστή `mail.example.com`, το αρχείο [.filename]#local-host-names# θα μοιάζει με το παρακάτω: [.programlisting] .... example.com mail.example.com .... Κάθε φορά που ενημερώνεται αυτό το αρχείο, θα πρέπει να γίνεται επανεκκίνηση του man:sendmail[8] για να διαβάσει τις αλλαγές. === [.filename]#/etc/mail/sendmail.cf# Το [.filename]#sendmail.cf# είναι το κεντρικό αρχείο ρυθμίσεων του sendmail. Το αρχείο αυτό ρυθμίζει τη συνολική συμπεριφορά του sendmail, που περιλαμβάνει μεταξύ άλλων την επανεγγραφή διευθύνσεων και την αποστολή μηνυμάτων απόρριψης προς απομακρυσμένους εξυπηρετητές mail. Καθώς το αρχείο αυτό περιέχει τόσο διαφορετικές ρυθμίσεις, είναι φυσικό να είναι αρκετά πολύπλοκο και οι λεπτομέρειες του είναι έξω από το σκοπό αυτής της ενότητας. Ευτυχώς, αυτό το αρχείο σπάνια χρειάζεται να αλλαχθεί σε τυπικούς εξυπηρετητές mail. Το βασικό αρχείο ρυθμίσεων του sendmail μπορεί να παραχθεί με τη βοήθεια μακροεντολών τύπου man:m4[1] που καθορίζουν τη συμπεριφορά και τα χαρακτηριστικά του sendmail. Για περισσότερες πληροφορίες, παρακαλούμε διαβάστε το [.filename]#/usr/src/contrib/sendmail/cf/README#. Για να ισχύσουν οι αλλαγές που κάνετε σε αυτό το αρχείο, θα πρέπει να επανεκκινήσετε το sendmail. === [.filename]#/etc/mail/virtusertable# Το αρχείο [.filename]#virtusertable# αντιστοιχεί διευθύνσεις mail εικονικών τομέων σε πραγματικές θυρίδες ταχυδρομείου. Οι θυρίδες αυτές μπορεί να είναι τοπικές, απομακρυσμένες, παρωνύμια που έχουν οριστεί στο [.filename]#/etc/mail/aliases#, ή αρχεία. .Παράδειγμα Αντιστοίχησης Mail Εικονικού Τομέα [example] ==== [.programlisting] .... root@example.com root postmaster@example.com postmaster@noc.example.net @example.com joe .... ==== Στο παραπάνω παράδειγμα, έχουμε μια αντιστοίχηση για τον τομέα `example.com`. Η επεξεργασία αυτού του αρχείου γίνεται από πάνω προς τα κάτω, και σταματάει στην εύρεση του πρώτου ονόματος που ταιριάζει. Η πρώτη γραμμή του παραδείγματος, αντιστοιχεί το mailto:root@example.com[root@example.com] στην τοπική θυρίδα `root`. Η επόμενη καταχώρηση αντιστοιχεί το mailto:postmaster@example.com[postmaster@example.com] στη θυρίδα `postmaster` στον υπολογιστή `noc.example.net`. Τέλος, αν δεν βρεθεί καμιά αντιστοίχηση για τον τομέα `example.com`, θα εφαρμοστεί η τελευταία αντιστοίχηση, η οποία ταιριάζει με οποιοδήποτε mail σταλθεί προς τον τομέα `example.com`. Στην περίπτωση αυτή, το μήνυμα θα παραδοθεί στην τοπική θυρίδα `joe`. [[mail-changingmta]] == Αλλάζοντας τον Αντιπρόσωπο Μεταφοράς Ταχυδρομείου (MTA) Όπως έχουμε ήδη αναφέρει, το FreeBSD έρχεται με το sendmail προεγκατεστημένο ως Αντιπρόσωπο Μεταφοράς Ταχυδρομείου (Mail Transfer Agent, MTA). Το πρόγραμμα αυτό είναι από προεπιλογή υπεύθυνο για την εισερχόμενη και εξερχόμενη αλληλογραφία. Υπάρχει ωστόσο πληθώρα λόγων για τους οποίους κάποιοι διαχειριστές επιλέγουν να αλλάξουν το MTA του συστήματος τους. Οι λόγοι αυτοί κυμαίνονται από το ότι απλά θέλουν να δοκιμάσουν κάποιο άλλο MTA, ως και το ότι χρειάζονται κάποιο ιδιαίτερο χαρακτηριστικό ή δυνατότητα που υπάρχει σε κάποιο άλλο mailer. Ευτυχώς, το FreeBSD κάνει εύκολη την αλλαγή του αντιπροσώπου. === Εγκαταστήστε Νέο MTA Υπάρχουν αρκετοί MTA για να επιλέξετε. Ένα καλό σημείο εκκίνησης είναι η crossref:ports[ports,Συλλογή των Ports του FreeBSD] όπου και θα μπορέσετε να βρείτε αρκετούς. Φυσικά είστε ελεύθερος να επιλέξετε όποιο MTA θέλετε από οπουδήποτε, όσο τουλάχιστον μπορείτε να το κάνετε να εκτελείτε στο FreeBSD. Ξεκινήστε εγκαθιστώντας το νέο σας MTA. Μετά την εγκατάσταση, θα έχετε την ευκαιρία να αποφασίσετε αν πραγματικά καλύπτει τις ανάγκες σας, καθώς και να ολοκληρώσετε τις ρυθμίσεις του πριν μεταφέρετε τη διαχείριση mail του συστήματος από το sendmail στο νέο σας πρόγραμμα. Κατά την εγκατάσταση, βεβαιωθείτε ότι το νέο σας λογισμικό δεν θα προσπαθήσει να εγκατασταθεί πάνω στα υπάρχοντα εκτελέσιμα του συστήματος, όπως το [.filename]#/usr/bin/sendmail#. Διαφορετικά, θα έχετε ουσιαστικά βάλει το νέο σας λογισμικό mail σε χρήση, πριν προλάβετε καλά-καλά να το ρυθμίσετε. Παρακαλούμε να διαβάσετε την τεκμηρίωση του MTA που επιλέξατε, για πληροφορίες σχετικά με τη ρύθμιση του. [[mail-disable-sendmail]] === Απενεργοποιήστε το sendmail [WARNING] ==== Αν απενεργοποιήσετε τη δυνατότητα αποστολής (εξερχόμενα) του sendmail, είναι σημαντικό να την αντικαταστήσετε με ένα εναλλακτικό σύστημα παράδοσης mail. Αν επιλέξετε να μην κάνετε το παραπάνω, τα μηνύματα του συστήματος, όπως αυτά που παράγονται από το man:periodic[8], δεν θα μπορούν να παραδοθούν μέσω email, όπως είναι το αναμενόμενο. Πολλά τμήματα του συστήματος σας αναμένουν ότι υπάρχει σε λειτουργία ένα σύστημα συμβατό με το sendmail. Αν οι εφαρμογές συνεχίζουν να χρησιμοποιούν τα εκτελέσιμα του sendmail προσπαθώντας να στείλουν email μετά την απενεργοποίηση του, το mail πιθανώς θα βρεθεί σε μια ανενεργή ουρά του sendmail και δεν θα παραδοθεί ποτέ. ==== Για να απενεργοποιήσετε εντελώς το sendmail, συμπεριλαμβανομένης και της υπηρεσίας εξερχόμενων μηνυμάτων, χρησιμοποιήστε: [.programlisting] .... sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" .... στο [.filename]#/etc/rc.conf.# Αν θέλετε να απενεργοποιήσετε μόνο την υπηρεσία εισερχομένων του sendmail θα πρέπει να θέσετε: [.programlisting] .... sendmail_enable="NO" .... στο [.filename]#/etc/rc.conf#. Περισσότερες πληροφορίες για τις επιλογές εκκίνησης του sendmail, διατίθενται από την αντίστοιχη σελίδα manual, man:rc.sendmail[8]. === Εκκίνηση του Νέου σας MTA κατά την Εκκίνηση Το νέο σας MTA θα ξεκινάει κατά την εκκίνηση, αν προσθέσετε μια κατάλληλη γραμμή στο αρχείο [.filename]#/etc/rc.conf#. Δείτε το παρακάτω παράδειγμα για το postfix: [source,shell] .... # echo 'postfix_enable="YES"' >> /etc/rc.conf .... Το MTA θα ξεκινάει πλέον κατά την εκκίνηση. === Αντικαθιστώντας το sendmail από Προεπιλεγμένο Mailer Συστήματος Το sendmail είναι τόσο γνωστό ως στάνταρ λογισμικό στα συστήματα UNIX(R), ώστε πολλά άλλα προγράμματα θεωρούν ότι είναι ήδη εγκατεστημένο και ρυθμισμένο. Για το λόγο αυτό, πολλά εναλλακτικά MTA παρέχουν δικές τους συμβατές υλοποιήσεις του sendmail. Οι υλοποιήσεις αυτές παρέχουν παρόμοιο σύνολο εντολών, και μπορούν έτσι να χρησιμοποιηθούν ώστε να αντικαταστήσουν "απευθείας" το sendmail. Για το λόγο αυτό, αν χρησιμοποιείτε κάποιο εναλλακτικό mailer, θα θέλετε να εξασφαλίσετε ότι άλλα προγράμματα που προσπαθούν να εκτελέσουν τα τυπικά εκτελέσιμα του sendmail όπως το [.filename]#/usr/bin/sendmail#, θα εκτελέσουν στην πραγματικότητα τον επιλεγμένο σας mailer. Ευτυχώς, το FreeBSD παρέχει ένα σύστημα που καλείτε man:mailwrapper[8] και το οποίο αναλαμβάνει αυτή τη δουλειά για σας. Όταν το sendmail λειτουργεί όπως έχει εγκατασταθεί αρχικά, θα βρείτε κάτι όπως το παρακάτω στο [.filename]#/etc/mail/mailer.conf#: [.programlisting] .... sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail .... Αυτό σημαίνει ότι όταν εκτελείται κάποια από αυτές τις συνηθισμένες εντολές (όπως το ίδιο το [.filename]#sendmail#), το σύστημα στην πραγματικότητα εκτελεί ένα αντίγραφο του mailwrapper που ονομάζεται [.filename]#sendmail#, και το οποίο ελέγχει το [.filename]#mailer.conf# και εκτελεί το [.filename]#/usr/libexec/sendmail/sendmail# αντί αυτού. Το σύστημα αυτό διευκολύνει ιδιαίτερα την αλλαγή των εκτελέσιμων που εκτελούνται στην πραγματικότητα όταν γίνεται κλήση των προεπιλεγμένων λειτουργιών του [.filename]#sendmail#. Έτσι, αν θέλετε να εκτελείται το [.filename]#/usr/local/supermailer/bin/sendmail-compat# αντί για το sendmail, θα μπορούσατε να αλλάξετε το [.filename]#/etc/mail/mailer.conf# ώστε να γράφει: [.programlisting] .... sendmail /usr/local/supermailer/bin/sendmail-compat send-mail /usr/local/supermailer/bin/sendmail-compat mailq /usr/local/supermailer/bin/mailq-compat newaliases /usr/local/supermailer/bin/newaliases-compat hoststat /usr/local/supermailer/bin/hoststat-compat purgestat /usr/local/supermailer/bin/purgestat-compat .... === Ολοκληρώνοντας Μόλις έχετε ρυθμίσει τα πάντα όπως επιθυμείτε, μπορείτε είτε να κάνετε kill τις διεργασίες του sendmail που δεν χρειάζεστε πλέον και να εκκινήσετε τις αντίστοιχες του νέου σας λογισμικού, ή απλώς να κάνετε επανεκκίνηση. Η επανεκκίνηση θα σας δώσει επίσης την ευκαιρία να βεβαιωθείτε ότι το σύστημα σας έχει ρυθμιστεί σωστά, ώστε το νέο σας MTA να ξεκινάει αυτόματα σε κάθε εκκίνηση. [[mail-trouble]] == Αντιμετώπιση Προβλημάτων === Γιατί πρέπει να χρησιμοποιώ το πλήρες όνομα (FQDN) για υπολογιστές που βρίσκονται στον τομέα μου; Το πιο πιθανό είναι να διαπιστώσετε ότι ο υπολογιστής βρίσκεται στην πραγματικότητα σε διαφορετικό τομέα. Για παράδειγμα, αν βρίσκεστε στο `foo.bar.edu` και θέλετε να επικοινωνήσετε με ένα υπολογιστή με το όνομα `mumble` στον τομέα `bar.edu`, θα πρέπει να αναφερθείτε σε αυτόν με το πλήρες του όνομα, `mumble.bar.edu`, αντί για απλώς `mumble`. Παραδοσιακά, αυτό επιτρεπόταν από τους DNS resolvers του BIND. Ωστόσο, η τρέχουσα έκδοση του BIND που περιλαμβάνεται στο FreeBSD, δεν παρέχει πλέον συντομεύσεις για μη-πλήρη ονόματα τομέων, εκτός για τον τομέα στον οποίο βρίσκεστε. Έτσι, ένας υπολογιστής με μη-πλήρες όνομα `mumble` θα πρέπει να βρεθεί ως `mumble.foo.bar.edu`, ή θα γίνει αναζήτηση για αυτόν στο ριζικό τομέα. Η συμπεριφορά αυτή είναι διαφορετική από την προηγούμενη, όπου η αναζήτηση συνεχιζόταν και στο `mumble.bar.edu`, και το `mumble.edu`. Ρίξτε μια ματιά στο RFC 1535 για το λόγο που το παραπάνω θεωρείτε κακή πρακτική, ή ακόμα και κενό ασφαλείας. Ένας τρόπος για να παρακάμψετε το πρόβλημα είναι να προσθέσετε τη γραμμή: [.programlisting] .... search foo.bar.edu bar.edu .... αντί για την προηγούμενη: [.programlisting] .... domain foo.bar.edu .... στο αρχείο [.filename]#/etc/resolv.conf#. Βεβαιωθείτε ωστόσο ότι η σειρά αναζήτησης δεν πηγαίνει πέρα από το "όριο μεταξύ τοπικής και δημόσιας διαχείρισης", όπως το αποκαλεί το RFC 1535. === Το sendmail δίνει το μήνυμα mail loops back to myself (το mail επιστρέφει στον εαυτό μου) Η απάντηση σε αυτό, υπάρχει στο FAQ του sendmail όπως φαίνεται παρακάτω: [.programlisting] .... Λαμβάνω αυτά τα μηνύματα λάθους: 553 MX list for domain.net points back to relay.domain.net 554 ... Local configuration error Πως μπορώ να λύσω το πρόβλημα; Έχετε ζητήσει το mail προς ένα τομέα (π.χ. το domain.net) να προωθείται προς ένα συγκεκριμένο υπολογιστή (στην περίπτωση αυτή το relay.domain.net) χρησιμοποιώντας μια εγγραφή MXMX record, αλλά το μηχάνημα αναμετάδοσης (relay) δεν αναγνωρίζει τον εαυτό του ως domain.net. Προσθέστε το domain.net στο /etc/mail/local-host-names [είναι γνωστό ως /etc/sendmail.cw πριν την έκδοση 8.10] (αν χρησιμοποιείτε το FEATURE(use_cw_file)), διαφορετικά προσθέστε το Cw domain.net στο /etc/mail/sendmail.cf. .... Μπορείτε να βρείτε το FAQ του sendmail στη διεύθυνση http://www.sendmail.org/faq/[http://www.sendmail.org/faq/], και συνίσταται να το διαβάσετε αν θέλετε να "πειράξετε" τις ρυθμίσεις του mail σας. -=== Πως μπορώ να εκτελέσω εξυπηρετητή mail σε υπολογιστή που συνδέεται μέσω επιλογικής σύνδεσης PPPPPP; +=== Πως μπορώ να εκτελέσω εξυπηρετητή mail σε υπολογιστή που συνδέεται μέσω επιλογικής σύνδεσης PPP; Θέλετε να συνδέσετε ένα FreeBSD μηχάνημα σε ένα τοπικό δίκτυο (LAN) στο Internet. Το FreeBSD μηχάνημα θα γίνει πύλη ταχυδρομείου για το LAN. Η σύνδεση PPP δεν είναι αποκλειστική. Υπάρχουν τουλάχιστον δύο τρόποι για να το κάνετε αυτό. Ο ένας είναι με τη χρήση UUCP. Ένας άλλος τρόπος είναι να βάλετε ένα εξυπηρετητή Internet ο οποίος έχει συνεχή σύνδεση, να σας παρέχει υπηρεσία δευτερεύοντος MX για τον τομέα σας. Για παράδειγμα, αν ο τομέας της εταιρίας σας είναι `example.com` και ο παροχέας σας Internet έχει ορίσει το `example.net` να παρέχει υπηρεσίες δευτερεύοντος MX για τον τομέα σας: [.programlisting] .... example.com. MX 10 example.com. MX 20 example.net. .... Μόνο ένας υπολογιστής μπορεί να καθοριστεί ως τελικός παραλήπτης (προσθέστε το `Cw example.com` στο αρχείο [.filename]#/etc/mail/sendmail.cf# στο `example.com`). Όταν το μηχάνημα που στέλνει μέσω του `sendmail` προσπαθεί να παραδώσει το mail θα προσπαθήσει να συνδεθεί στο δικό σας (`example.com`) μέσω της σύνδεσης modem. Το πιο πιθανό είναι ότι δεν θα τα καταφέρει, γιατί δεν θα είστε συνδεμένος εκείνη τη στιγμή. Το sendmail θα το παραδώσει αυτόματα στην υπηρεσία δευτερεύοντος MX, π.χ. τον παροχέα σας Internet (`example.net`). Το δευτερεύον MX θα προσπαθεί περιοδικά να συνδεθεί στο μηχάνημα σας και να παραδώσει το mail στον κύριο εξυπηρετητή MX (`example.com`). Μπορείτε να χρησιμοποιήσετε κάτι όπως το παρακάτω ως script εισόδου: [.programlisting] .... #!/bin/sh # Put me in /usr/local/bin/pppmyisp ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp .... Αν πρόκειται να χρησιμοποιήσετε χωριστό script για την είσοδο κάποιου χρήστη, μπορείτε να χρησιμοποιήσετε αντί για το παραπάνω το `sendmail -qRexample.com` στο script. Αυτό θα εξαναγκάσει την άμεση επεξεργασία όλου του mail στην ουρά για το `example.com`. Πιο λεπτομερής περιγραφή της κατάστασης φαίνεται παρακάτω: Μήνυμα από την {freebsd-isp}. [.programlisting] .... > παρέχουμε δευτερεύον MX για ένα πελάτη. Ο πελάτης συνδέεται στις > υπηρεσίες μας αρκετές φορές τη μέρα αυτόματα, για να λαμβάνει τα email του > στο πρωτεύον του MX (Δεν καλούμε την τοποθεσία του όταν λαμβάνουμε email > για τον τομέα του). Το sendmail μας στέλνει το mailqueue κάθε 30 λεπτά. > Τη δεδομένη στιγμή θα πρέπει να μείνει συνδεμένος για 30 λεπτά, > για να είναι βέβαιος ότι όλο το email του θα έχει > παραδοθεί στον πρωτεύοντα MX. > > Υπάρχει κάποια εντολή που να εξαναγκάσει το sendmail να στείλει > όλα τα mails άμεσα; Ο χρήστης φυσικά δεν έχει δικαιώματα > root στο μηχάνημα μας. Στην ενότητα privacy flags του sendmail.cf, υπάρχει ένας ορισμός Opgoaway,restrictqrun Αφαιρέστε το restrictqrun για να επιτρέψετε σε μη-root χρήστες να ξεκινήσουν την επεξεργασία της ουράς. Μπορεί επίσης να θέλετε να αναδιατάξετε τα MX. Είμαστε το 1ο MX για αυτού του είδους τους πελάτες, και έχουμε ορίσει: # If we are the best MX for a host, try directly instead of generating # local config error. OwTrue Με τον τρόπο αυτό, ένα απομακρυσμένο site θα παραδίδει απευθείας σε σας, χωρίς να προσπαθεί τη σύνδεση με το χρήστη. Έπειτα τα στέλνετε στον πελάτη σας. Αυτό λειτουργεί μόνο για μηχανήματα, και έτσι χρειάζεται να βάλετε τον πελάτη σας να ονομάσει το μηχάνημα του mail customer.com και επίσης hostname.customer.com στο DNS. Απλώς προσθέστε μια εγγραφή τύπου A στο DNS για το customer.com. .... === Γιατί λαμβάνω συνέχεια μηνύματα λάθους Relaying Denied όταν στέλνω mail από άλλους υπολογιστές; Στις προεπιλεγμένες εγκαταστάσεις του FreeBSD, το sendmail είναι ρυθμισμένο να στέλνει mail μόνο από τον υπολογιστή στον οποίο εκτελείται. Για παράδειγμα, αν υπάρχει διαθέσιμος διακομιστής POP, οι χρήστες θα μπορούν να ελέγχουν το mail τους από το σχολείο, το γραφείο, ή άλλη απομακρυσμένη τοποθεσία, αλλά θα εξακολουθούν να μην μπορούν να στείλουν προς εξωτερικές διευθύνσεις. Τυπικά, λίγο μετά από μια απόπειρα αποστολής, θα σταλεί ένα email από τον MAILER-DAEMON με το μήνυμα λάθους `5.7 Relaying Denied`. Υπάρχουν διάφοροι τρόποι για να ξεπεράσετε το πρόβλημα. Ο πλέον απλός είναι να βάλετε τη διεύθυνση του ISP σας σε ένα αρχείο relay-domains, [.filename]#/etc/mail/relay-domains#. Ένας γρήγορος τρόπος για να το κάνετε αυτό είναι: [source,shell] .... # echo "your.isp.example.com" > /etc/mail/relay-domains .... Αφού δημιουργήσετε ή επεξεργαστείτε αυτό το αρχείο, θα πρέπει να επανεκκινήσετε το sendmail. Αυτό δουλεύει μια χαρά αν είστε διαχειριστής εξυπηρετητή και δεν επιθυμείτε να στέλνετε mail τοπικά, ή αν θέλετε να χρησιμοποιήσετε ένα σύστημα τύπου point και click σε ένα άλλο μηχάνημα ή ακόμα και σε άλλο ISP. Είναι επίσης πολύ χρήσιμο αν έχετε ρυθμίσει μόνο ένα ή δύο λογαριασμούς mail. Αν θέλετε να προσθέσετε μεγαλύτερο αριθμό διευθύνσεων, μπορείτε να ανοίξετε αυτό το αρχείο με τον επιθυμητό συντάκτη κειμένου, και να προσθέσετε όλους τους τομείς, ένα σε κάθε γραμμή: [.programlisting] .... your.isp.example.com other.isp.example.net users-isp.example.org www.example.org .... Τώρα, οποιαδήποτε αποστολή mail από το σύστημα σας από οποιοδήποτε υπολογιστή αυτής της λίστας (με την προϋπόθεσή ο χρήστης να έχει λογαριασμό στο σύστημα σας), θα είναι επιτυχής. Πρόκειται για ένα πολύ καλό τρόπο να επιτρέψετε στους χρήστες να στέλνουν mail από το σύστημα σας μέσω απομακρυσμένης σύνδεσης, χωρίς να επιτρέπετε σε άλλους να στέλνουν SPAM μέσω του συστήματος σας. [[mail-advanced]] == Προχωρημένα Θέματα Η ακόλουθη ενότητα καλύπτει πιο προχωρημένα θέματα, όπως τη ρύθμιση του mail και ρυθμίσεις για ένα ολόκληρο τομέα. [[mail-config]] === Βασικές Ρυθμίσεις Χωρίς να χρειαστεί να κάνετε καμιά ρύθμιση, θα μπορείτε να στείλετε mail προς εξωτερικούς υπολογιστές, αρκεί να έχετε ρυθμίσει το [.filename]#/etc/resolv.conf# ή να εκτελείτε το δικό σας εξυπηρετητή DNS. Αν θέλετε να παραλαμβάνετε mail για τον υπολογιστή σας στο δικό σας sendmail MTA, υπάρχουν δύο μέθοδοι: * Μπορείτε να έχετε δικό σας τομέα και δικό σας εξυπηρετητή DNS για τον τομέα σας. Για παράδειγμα, `FreeBSD.org` * Να παραλαμβάνετε mail απευθείας στο μηχάνημα σας. Αυτό γίνεται αν το mail παραδίδεται απευθείας στον υπολογιστή σας, χρησιμοποιώντας τον όνομα του (πρέπει να βρίσκεται στο DNS). Για παράδειγμα, `example.FreeBSD.org`. Όποια επιλογή από τις παραπάνω και να κάνατε, για να είναι δυνατή η παραλαβή mail απευθείας στον υπολογιστή σας, θα πρέπει να έχετε μόνιμη στατική διεύθυνση IP (όχι δυναμική, όπως είναι οι περισσότερες επιλογικές συνδέσεις PPP). Αν βρίσκεστε πίσω από κάποιο firewall, θα πρέπει να επιτρέπει τη διακίνηση SMTP προς εσάς. Αν θέλετε να λαμβάνετε mail απευθείας στον υπολογιστή σας, θα πρέπει να εξασφαλίσετε _ένα_ από τα παρακάτω: * Να βεβαιωθείτε ότι η εγγραφή MX (με το χαμηλότερο αριθμό) στο DNS σας, δείχνει προς τη διεύθυνση IP του μηχανήματος σας. * Να βεβαιωθείτε ότι δεν υπάρχει καμιά εγγραφή MX στο DNS για τον υπολογιστή σας. Όποιο από τα παραπάνω και αν κάνετε, θα μπορείτε να λαμβάνετε mail απευθείας στον υπολογιστή σας. Δοκιμάστε αυτό: [source,shell] .... # hostname example.FreeBSD.org # host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX .... Αν βλέπετε το παραπάνω, το mail που κατευθύνεται απευθείας στο mailto:yourlogin@example.FreeBSD.org[yourlogin@example.FreeBSD.org] θα πρέπει να λαμβάνεται χωρίς προβλήματα (θεωρώντας ότι το sendmail εκτελείτε σωστά στον υπολογιστή `example.FreeBSD.org`). Αν αντί για αυτό δείτε κάτι σαν το παρακάτω: [source,shell] .... # host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org .... Όλο το mail που κατευθύνεται προς τον υπολογιστή σας (`example.FreeBSD.org`) θα καταλήξει να συλλέγεται στο `hub` με το ίδιο όνομα χρήστη, αντί να σταλεί απευθείας στο μηχάνημα σας. Τις παραπάνω πληροφορίες, τις χειρίζεται ο δικός σας εξυπηρετητής DNS. Η εγγραφή DNS που περιέχει τις πληροφορίες δρομολόγησης για το mail, είναι η __M__ail e__X__change. Αν δεν υπάρχει εγγραφή MX, το mail θα παραδίδεται απευθείας στον υπολογιστή μέσω της IP διεύθυνσης του. Η καταχώριση MX για τον `freefall.FreeBSD.org` έμοιαζε κάποια στιγμή με την παρακάτω: [.programlisting] .... freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com .... Όπως μπορείτε να δείτε, ο `freefall` είχε πολλές καταχωρήσεις MX. Η καταχώρηση με τον μικρότερο αριθμό, είναι ο υπολογιστής που λαμβάνει το mail απευθείας, αν είναι διαθέσιμος. Αν για κάποιο λόγο δεν είναι προσβάσιμος, οι άλλοι (που ορισμένες φορές καλούνται "backup MXes") δέχονται τα μηνύματα προσωρινά και τα μεταβιβάζουν σε κάποιο υπολογιστή με χαμηλότερη αρίθμηση, μόλις γίνει διαθέσιμος. Τελικά τα μηνύματα καταλήγουν στον υπολογιστή με το μικρότερο αριθμό. Οι εναλλακτικές τοποθεσίες MX, θα πρέπει να χρησιμοποιούν διαφορετικές γραμμές για τη σύνδεση τους με το Internet. Αυτή είναι η καλύτερη λύση. Ο παροχέας σας ή κάποιο άλλο φιλικό site, δεν θα έχουν κανένα πρόβλημα να σας παρέχουν αυτή την υπηρεσία. [[mail-domain]] === Mail για τον Τομέα Σας Για να δημιουργήσετε ένα "mailhost" (δηλ. ένα εξυπηρετητή mail) θα πρέπει οποιοδήποτε mail στέλνεται προς κάποιο σταθμό εργασίας, να λαμβάνεται σε αυτόν. Βασικά θα θέλετε να "διεκδικείτε" οποιοδήποτε mail που κατευθύνεται προς οποιοδήποτε όνομα μηχανήματος του τομέα σας (στην περίπτωση μας το `*.FreeBSD.org`) και να το ανακατευθύνετε προς τον εξυπηρετητή mail, ώστε οι χρήστες σας να μπορούν να λάβουν το mail τους από τον κεντρικό εξυπηρετητή. Για ευκολία, θα πρέπει να έχετε ένα λογαριασμό χρήστη με το ίδιο _όνομα χρήστη_ και στα δύο μηχανήματα. Χρησιμοποιήστε για το σκοπό αυτό την εντολή man:adduser[8]. Ο mailhost που θα χρησιμοποιήσετε, πρέπει να είναι το καθορισμένο μηχάνημα για την ανταλλαγή μηνυμάτων για κάθε σταθμό εργασίας του δικτύου. Αυτό γίνεται στις ρυθμίσεις DNS με τον ακόλουθο τρόπο: [.programlisting] .... example.FreeBSD.org A 204.216.27.XX ; Workstation MX 10 hub.FreeBSD.org ; Mailhost .... Με τον τρόπο αυτό, το mail που κατευθύνεται προς κάποιο σταθμό εργασίας θα ανακατευθυνθεί προς το mailhost, άσχετα με το που δείχνει η εγγραφή τύπου Α. Το mail στέλνεται προς τον υπολογιστή MX. Δεν μπορείτε να κάνετε το παραπάνω, αν δεν εκτελείτε το δικό σας εξυπηρετητή DNS. Αν αυτό δεν συμβαίνει, και δεν μπορείτε να το αλλάξετε, συνεννοηθείτε με τον παροχέα σας (ISP) ή με όποιον σας παρέχει υπηρεσίες DNS. Αν παρέχετε υπηρεσίες εικονικού ταχυδρομείου, οι παρακάτω πληροφορίες θα σας φανούν χρήσιμες. Για το παράδειγμα μας, θα υποθέσουμε ότι έχετε ένα πελάτη με το δικό του τομέα, στην περίπτωση μας το `customer1.org`, και θέλετε όλο το mail για το `customer1.org` να στέλνεται στο δικό σας mailhost, `mail.myhost.com`. Η καταχώριση σας στο DNS θα μοιάζει με την παρακάτω: [.programlisting] .... customer1.org MX 10 mail.myhost.com .... Σημειώστε ότι _δεν χρειάζεστε_ εγγραφή τύπου Α για το `customer1.org` αν θέλετε απλώς να χειρίζεστε email για αυτό τον τομέα. [NOTE] ==== Να έχετε υπόψη σας ότι δεν θα μπορείτε να κάνετε ping το `customer1.org` αν δεν υπάρχει για αυτό εγγραφή τύπου Α. ==== Το τελευταίο πράγμα που πρέπει να κάνετε, είναι να ορίσετε στο sendmail που εκτελείται στο δικό σας mailhost, για ποιους τομείς ή / και μηχανήματα θα δέχεται mail. Υπάρχουν μερικοί διαφορετικοί τρόποι για να γίνει αυτό. Μπορείτε να χρησιμοποιήσετε έναν από τους παρακάτω: * Προσθέστε τα μηχανήματα στο αρχείο [.filename]#/etc/mail/local-host-names# αν χρησιμοποιείτε τη δυνατότητα `FEATURE(use_cw_file)`. Αν χρησιμοποιείτε κάποια έκδοση του sendmail πριν την 8.10, το αρχείο είναι το [.filename]#/etc/sendmail.cw#. * Προσθέστε μια γραμμή `Cwyour.host.com` στο αρχείο σας [.filename]#/etc/sendmail.cf# ή στο αρχείο [.filename]#/etc/mail/sendmail.cf# αν χρησιμοποιείτε την έκδοση 8.10 του sendmail ή κάποια μεταγενέστερη. [[SMTP-UUCP]] == SMTP με UUCP Η προεπιλεγμένη ρύθμιση του sendmail που έρχεται με το FreeBSD, προορίζεται για δικτυακές τοποθεσίες που είναι απευθείας συνδεδεμένες στο Internet. Σε περιπτώσεις που είναι επιθυμητή η ανταλλαγή email μέσω UUCP, θα πρέπει να χρησιμοποιηθεί διαφορετικό αρχείο ρυθμίσεων για το sendmail. Η χειροκίνητη ρύθμιση του αρχείου [.filename]#/etc/mail/sendmail.cf# ανήκει στα προχωρημένα θέματα. Η έκδοση 8 του sendmail παράγει αρχεία ρυθμίσεων μέσω του προεπεξεργαστή man:m4[1], όπου οι ρυθμίσεις γίνονται σε ένα ανώτερο επίπεδο αφαίρεσης. Μπορείτε να βρείτε τα αρχεία ρύθμισης τουman:m4[1] στον κατάλογο [.filename]#/usr/shared/sendmail/cf#. Διαβάστε το [.filename]#README# στον κατάλογο [.filename]#cf# για μια βασική εισαγωγή στις ρυθμίσεις του man:m4[1]. Ο καλύτερος τρόπος για την παράδοση mail μέσω του UUCP, είναι με την χρήση της δυνατότητας `mailertable`. Παράγεται με αυτό τον τρόπο μια βάση δεδομένων που μπορεί να χρησιμοποιήσει το sendmail για να πάρει αποφάσεις σχετικά με την δρομολόγηση. Θα πρέπει αρχικά να δημιουργήσετε το αρχείο [.filename]#.mc#. Θα βρείτε μερικά παραδείγματα στον κατάλογο [.filename]#/usr/shared/sendmail/cf/cf#. Υποθέτοντας ότι έχετε ονομάσει το αρχείο σας [.filename]#foo.mc#, το μόνο που χρειάζεται να κάνετε για να το μετατρέψετε σε ένα έγκυρο αρχείο [.filename]#sendmail.cf# είναι: [source,shell] .... # cd /etc/mail # make foo.cf # cp foo.cf /etc/mail/sendmail.cf .... Ένα τυπικό αρχείο [.filename]#.mc# θα δείχνει όπως το παρακάτω: [.programlisting] .... VERSIONID(`Your version number') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', your.uucp.relay) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw your.alias.host.name Cw youruucpnodename.UUCP .... Οι γραμμές που περιέχουν τις δυνατότητες `accept_unresolvable_domains`, `nocanonify`, and `confDONT_PROBE_INTERFACES` θα αποτρέψουν τη χρήση του DNS κατά την παράδοση του mail. Η οδηγία `UUCP_RELAY` απαιτείται για την υποστήριξη παράδοσης μέσω του UUCP. Απλώς τοποθετήστε εκεί ένα όνομα μηχανήματος στο Internet που να μπορεί να χειριστεί διευθύνσεις ψευδο-τομέων .UUCP. Το πιο πιθανό είναι να βάλετε εκεί τον αναμεταδότη (relay) για mail που παρέχει ο ISP σας. Έχοντας κάνει το παραπάνω, θα χρειαστείτε ένα αρχείο [.filename]#/etc/mail/mailertable#. Αν έχετε μόνο μια σύνδεση με τον έξω κόσμο που χρησιμοποιείται για όλα σας τα mail, το παρακάτω αρχείο είναι επαρκές: [.programlisting] .... # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:your.uucp.relay .... Ένα πιο πολύπλοκο παράδειγμα θα μοιάζει με το παρακάτω: [.programlisting] .... # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: .... Οι τρεις πρώτες γραμμές χειρίζονται ειδικές περιπτώσεις, όπου το mail που απευθύνεται σε κάποιο τομέα δεν θα πρέπει να σταλθεί στην προεπιλεγμένη διαδρομή, αλλά αντίθετα σε κάποιο γειτονικό UUCP προκειμένου να "συντομευθεί" το μονοπάτι παράδοσης. Η επόμενη γραμμή χειρίζεται το mail προς τον τοπικό τομέα Ethernet, όπου είναι δυνατή η παράδοση μέσω SMTP. Τέλος, οι γειτονικοί UUCP αναφέρονται με γραφή ψευδο-τομέων UUCP ώστε να επιτρέπεται σε κάποιον `uucp-neighbor !recipient` να παρακάμψει τους προεπιλεγμένους κανόνες. Η τελευταία γραμμή είναι πάντα μια μοναδική τελεία, η οποία ταιριάζει με οτιδήποτε άλλο, με παράδοση UUCP σε ένα γειτονικό UUCP ο οποίος ενεργεί ως γενική πύλη mail προς τον υπόλοιπο κόσμο. Όλα τα ονόματα υπολογιστών που βρίσκονται μετά το `uucp-dom:` θα πρέπει να είναι έγκυροι UUCP γείτονες, όπως μπορείτε να βεβαιώσετε χρησιμοποιώντας το `uuname`. Σας υπενθυμίζουμε ότι αυτό το αρχείο πρέπει να μετατραπεί σε μια βάση δεδομένων DBM πριν χρησιμοποιηθεί. Μπορείτε να βάλετε τη γραμμή εντολών που απαιτείται για να επιτευχθεί αυτό ως σχόλιο στην αρχή του αρχείου [.filename]#mailertable#. Πρέπει πάντοτε να εκτελείτε αυτή την εντολή κάθε φορά που αλλάζετε το αρχείο [.filename]#mailertable#. Μια τελευταία υπόδειξη: αν δεν είστε βέβαιοι για το αν θα λειτουργήσει κάποια συγκεκριμένη δρομολόγηση mail, θυμηθείτε την επιλογή `-bt` του sendmail. Αυτή ξεκινάει το sendmail σε _κατάσταση δοκιμής διευθύνσεων_. Γράψτε `3,0`, ακολουθούμενο από τη διεύθυνση που θέλετε να ελέγξετε για δρομολόγηση mail. Η τελευταία γραμμή θα σας πει τον εσωτερικό αντιπρόσωπο mail που χρησιμοποιήθηκε, τη διεύθυνση προορισμού με την οποία κλήθηκε, καθώς και την (πιθανώς μεταφρασμένη) διεύθυνση. Μπορείτε να βγείτε από αυτή την κατάσταση, πληκτρολογώντας kbd:[Ctrl+D]. [source,shell] .... % sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter
> 3,0 foo@example.com canonify input: foo @ example . com ... parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . > > ^D .... [[outgoing-only]] == Ρύθμιση Εξυπηρετητή Μόνο για Αποστολή Υπάρχουν πολλές περιπτώσεις, που μπορεί να θέλετε μόνο να στέλνετε mail μέσω κάποιου αναμεταδότη. Μερικά παραδείγματα: * Ο υπολογιστής σας χρησιμοποιείται ως desktop, αλλά θέλετε να χρησιμοποιήσετε προγράμματα όπως το man:send-pr[1]. Για να γίνει αυτό θα πρέπει να χρησιμοποιήσετε τον αναμεταδότη mail που παρέχει ο ISP σας. * Ο υπολογιστής σας είναι ένας εξυπηρετητής που δεν χειρίζεται το mail τοπικά, αλλά χρειάζεται να το δώσει εξ' ολοκλήρου σε κάποιο αναμεταδότη για επεξεργασία. Οποιοδήποτε σχεδόν MTA είναι ικανό να καλύψει τον παραπάνω ρόλο. Δυστυχώς, μπορεί να είναι πολύ δύσκολο να ρυθμίσετε σωστά ένα πλήρες MTA ώστε απλώς να στέλνει το mail προς αναμετάδοση. Προγράμματα όπως το sendmail και το postfix είναι υπερβολικά μεγάλα για αυτή τη δουλειά. Επιπρόσθετα, αν χρησιμοποιείτε κάποια συνηθισμένη υπηρεσία πρόσβασης στο Internet, η συμφωνία με την εταιρία παροχής μπορεί να σας απαγορεύει να εκτελείτε το δικό σας "εξυπηρετητή mail". Ο ευκολότερος τρόπος για να εκπληρώσετε αυτές τις ανάγκες είναι να εγκαταστήσετε το port package:mail/ssmtp[] Εκτελέστε τις ακόλουθες εντολές ως `root`: [source,shell] .... # cd /usr/ports/mail/ssmtp # make install replace clean .... Μετά την εγκατάσταση, το package:mail/ssmtp[] μπορεί να ρυθμιστεί με ένα αρχείο τεσσάρων μόλις γραμμών, το οποίο βρίσκεται στο [.filename]#/usr/local/etc/ssmtp/ssmtp.conf#: [.programlisting] .... root=yourrealemail@example.com mailhub=mail.example.com rewriteDomain=example.com hostname=_HOSTNAME_ .... Βεβαιωθείτε ότι χρησιμοποιείτε την πραγματική διεύθυνση email για τον `root`. Βάλτε τον αναμεταδότη mail του ISP σας στη θέση `mail.example.com` (μερικοί ISP τον ονομάζουν "εξυπηρετητή εξερχόμενου ταχυδρομείου" ή "εξυπηρετητή SMTP"). Βεβαιωθείτε ότι έχετε απενεργοποιήσει πλήρως το sendmail, ακόμα και την υπηρεσία εξερχόμενων μηνυμάτων. Δείτε το <> για λεπτομέρειες. Υπάρχουν κάποιες ακόμα διαθέσιμες επιλογές στο package:mail/ssmtp[]. Δείτε το παράδειγμα του αρχείου ρυθμίσεων στο [.filename]#/usr/local/etc/ssmtp# ή τη σελίδα manual του ssmtp για περισσότερα παραδείγματα και πληροφορίες. Ρυθμίζοντας το ssmtp με αυτό τον τρόπο, θα είναι δυνατή η σωστή λειτουργία οποιουδήποτε λογισμικού στον υπολογιστή σας που χρειάζεται να στείλει mail. Επίσης δεν παραβιάζεται με αυτό τον τρόπο η άδεια χρήσης του ISP σας και δεν μπορεί ο υπολογιστής σας να παραβιαστεί και να χρησιμοποιηθεί για την αποστολή ανεπιθύμητων μηνυμάτων (spam). [[SMTP-dialup]] == Χρησιμοποιώντας το Mail Μέσω Επιλογικής (Dialup) Σύνδεσης Αν έχετε στατική διεύθυνση IP, δεν θα χρειαστεί να αλλάξετε καμιά από τις προεπιλογές. Ρυθμίστε το όνομα του υπολογιστή σας ώστε να ταιριάζει με αυτό που σας έχει οριστεί για το Internet, και το sendmail θα κάνει τα υπόλοιπα. Αν λαμβάνετε δυναμική IP και χρησιμοποιείτε επιλογική PPP σύνδεση με το Internet, πιθανόν διαθέτετε μια θυρίδα ταχυδρομείου (mailbox) στον εξυπηρετητή mail του παροχέα σας. Ας υποθέσουμε ότι ο τομέας του ISP σας είναι `example.net`, και ότι το όνομα χρήστη σας είναι `user`, το μηχάνημα σας λέγεται `bsd.home`, και ο ISP σας, σας έχει πει ότι μπορείτε να χρησιμοποιήσετε το `relay.example.net` ως αναμεταδότη για το mail. Για να μπορέσετε να λάβετε mail από τη θυρίδα σας, θα χρειαστείτε κάποιο αντιπρόσωπο ανάληψης (retrieval agent). Το βοηθητικό πρόγραμμα fetchmail είναι μια καλή επιλογή, καθώς υποστηρίζει πολλά διαφορετικά πρωτόκολλα. Το πρόγραμμα αυτό είναι διαθέσιμο ως πακέτο ή από την Συλλογή των Ports (package:mail/fetchmail[]). Συνήθως, ο ISP σας θα παρέχει την υπηρεσία POP. Αν χρησιμοποιείτε PPP χρήστη, μπορείτε να κατεβάσετε αυτόματα το mail σας μετά την αποκατάσταση της σύνδεσης σας, χρησιμοποιώντας την ακόλουθη καταχώριση στο [.filename]#/etc/ppp/ppp.linkup#: [.programlisting] .... MYADDR: !bg su user -c fetchmail .... Αν χρησιμοποιείτε το sendmail (όπως φαίνεται παρακάτω) για να παραδώσετε mail σε μη-τοπικούς λογαριασμούς, πιθανόν να θέλετε το sendmail να επεξεργάζεται την ουρά του mail αμέσως μετά την αποκατάσταση της σύνδεσης. Για να το κάνετε αυτό, βάλτε την παρακάτω εντολή αμέσως μετά την εντολή `fetchmail` στο αρχείο [.filename]#/etc/ppp/ppp.linkup#: [.programlisting] .... !bg su user -c "sendmail -q" .... Ας υποθέσουμε ότι υπάρχει ένας λογαριασμός για τον `user` στον `bsd.home`. Στον προσωπικό κατάλογο του `user` στο `bsd.home`, δημιουργήστε ένα αρχείο [.filename]#.fetchmailrc#: [.programlisting] .... poll example.net protocol pop3 fetchall pass MySecret .... Το αρχείο αυτό δεν θα πρέπει να είναι αναγνώσιμο από κανένα, εκτός από τον `user`, καθώς περιέχει τον κωδικό `MySecret`. Για να μπορείτε να στείλετε mail με τη σωστή επικεφαλίδα `from:`, θα πρέπει να ρυθμίσετε το sendmail να χρησιμοποιεί το mailto:user@example.net[user@example.net] αντί για το mailto:user@bsd.home[user@bsd.home]. Ίσως επίσης να θέλετε να ρυθμίσετε το sendmail να στέλνει όλο το mail μέσω του `relay.example.net`, ώστε η μετάδοση του mail να είναι ταχύτερη. Το ακόλουθο αρχείο [.filename]#.mc# θα πρέπει να είναι επαρκές: [.programlisting] .... VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`example.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.example.net') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl .... Διαβάστε την προηγούμενη ενότητα για λεπτομέρειες σχετικά με την μετατροπή αυτού του αρχείου [.filename]#.mc# σε ένα αρχείο [.filename]#sendmail.cf#. Επίσης, μη ξεχάσετε να επανεκκινήσετε το sendmail μετά την ενημέρωση του [.filename]#sendmail.cf#. [[SMTP-Auth]] == Πιστοποίηση Αυθεντικότητας στο SMTP Η χρήση SMTP με πιστοποίηση αυθεντικότητας στον εξυπηρετητή ταχυδρομείου σας, μπορεί να σας προσφέρει μια σειρά από οφέλη. Μπορεί να προσθέσει ένα ακόμα επίπεδο ασφάλειας στο sendmail, ενώ έχει και το πλεονέκτημα ότι δίνει τη δυνατότητα στους χρήστες φορητών υπολογιστών (που συχνά συνδέονται μέσω διαφορετικών δικτύων) να χρησιμοποιούν τον ίδιο εξυπηρετητή ταχυδρομείου χωρίς την ανάγκη επαναρύθμισης κάθε φορά του προγράμματος αποστολής / λήψης ταχυδρομείου. [.procedure] . Εγκαταστήστε το package:security/cyrus-sasl2[] από τη Συλλογή των Ports. Το port αυτό υποστηρίζει μια σειρά από επιλογές που μπορείτε να θέσετε κατά την μεταγλώττιση. Για να μπορέσετε να χρησιμοποιήσετε την μέθοδο αυθεντικοποίησης στο SMTP που συζητάμε εδώ, βεβαιωθείτε ότι είναι ενεργοποιημένη η επιλογή `LOGIN`. . Μετά την εγκατάσταση του package:security/cyrus-sasl2[], τροποποιήστε το αρχείο [.filename]#/usr/local/lib/sasl2/Sendmail.conf# (ή δημιουργήστε το αν δεν υπάρχει) και προσθέστε την παρακάτω γραμμή: + [.programlisting] .... pwcheck_method: saslauthd .... . Εγκαταστήστε έπειτα το package:security/cyrus-sasl2-saslauthd[], και προσθέστε στο [.filename]#/etc/rc.conf# την ακόλουθη γραμμή: + [.programlisting] .... saslauthd_enable="YES" .... + Τέλος, ξεκινήστε το δαίμονα saslauthd: + [source,shell] .... # /usr/local/etc/rc.d/saslauthd start .... + Ο δαίμονας αυτός δρα ως ενδιάμεσος για το sendmail ώστε να γίνεται πιστοποίηση αυθεντικότητας μέσω της βάσης δεδομένων κωδικών [.filename]#passwd# του FreeBSD συστήματος σας. Με αυτό τον τρόπο απαλλάσσεστε από την ανάγκη δημιουργίας νέου σετ από ονόματα χρηστών και κωδικούς για κάθε χρήστη που χρειάζεται να χρησιμοποιήσει πιστοποίηση στο SMTP. Χρησιμοποιείται το ίδιο όνομα και κωδικός, τόσο για είσοδο στο σύστημα, όσο και για το mail. . Επεξεργαστείτε τώρα το [.filename]#/etc/make.conf# και προσθέστε τις ακόλουθες γραμμές: + [.programlisting] .... SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl2 .... + Οι γραμμές αυτές, παρέχουν στο sendmail τις κατάλληλες ρυθμίσεις ώστε να συνδεθεί σωστά με το package:cyrus-sasl2[] κατά τη διάρκεια της μεταγλώττισης. Βεβαιωθείτε ότι είναι εγκατεστημένο το πακέτο package:cyrus-sasl2[] πριν ξεκινήσετε την επαναμεταγλώττιση του sendmail. . Επαναμεταγλωττίστε το sendmail εκτελώντας τις παρακάτω εντολές: + [source,shell] .... # cd /usr/src/lib/libsmutil # make cleandir && make obj && make # cd /usr/src/lib/libsm # make cleandir && make obj && make # cd /usr/src/usr.sbin/sendmail # make cleandir && make obj && make && make install .... + Η μεταγλώττιση του sendmail δεν πρέπει να παρουσιάσει προβλήματα, αν το [.filename]#/usr/src# δεν έχει αλλάξει σε μεγάλο βαθμό και εφόσον υπάρχουν οι κοινόχρηστες βιβλιοθήκες που απαιτούνται. . Μετά την μεταγλώττιση και επανεγκατάσταση του sendmail, επεξεργαστείτε το αρχείο [.filename]#/etc/mail/freebsd.mc# (ή όποιο αρχείο χρησιμοποιείτε ως [.filename]#.mc#. Πολλοί διαχειριστές επιλέγουν να χρησιμοποιήσουν την έξοδο της εντολής man:hostname[1] ως όνομα για το αρχείο [.filename]#.mc# για να εξασφαλίσουν ότι είναι μοναδικό). Προσθέστε σε αυτό τις ακόλουθες γραμμές: + [.programlisting] .... dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl .... + Οι επιλογές αυτές ρυθμίζουν τις διαφορετικές μεθόδους που έχει στη διάθεση του το sendmail, προκειμένου να πιστοποιήσει τους χρήστες. Αν θέλετε να χρησιμοποιήσετε κάποια μέθοδο διαφορετική από το pwcheck, δείτε την τεκμηρίωση που περιλαμβάνεται. . Τέλος, εκτελέστε man:make[1] ενώ βρίσκεστε στον κατάλογο [.filename]#/etc/mail#. Με τον τρόπο αυτό, θα χρησιμοποιηθεί το νέο σας [.filename]#.mc# αρχείο και θα δημιουργηθεί ένα αρχείο [.filename]#.cf# με όνομα [.filename]#freebsd.cf# (ή οτιδήποτε όνομα είχατε δώσει στο αρχείο [.filename]#.mc#). Χρησιμοποιήστε έπειτα την εντολή `make install restart`, η οποία θα αντιγράψει το αρχείο στο [.filename]#sendmail.cf#, και θα επανεκκινήσει σωστά το sendmail. Για περισσότερες λεπτομέρειες σχετικά με αυτή τη διαδικασία, θα πρέπει να διαβάσετε το αρχείο [.filename]#/etc/mail/Makefile#. Αν όλα πήγαν καλά, θα πρέπει να μπορείτε να δώσετε τα στοιχεία εισόδου σας στο πρόγραμμα που χρησιμοποιείτε για αποστολή και λήψη mail, και να στείλετε ένα δοκιμαστικό μήνυμα. Για να διερευνήσετε περισσότερο τη λειτουργία, θέστε την επιλογή `LogLevel` του sendmail στο 13 και παρακολουθήστε το [.filename]#/var/log/maillog# για τυχόν λάθη. Για περισσότερες πληροφορίες, παρακαλούμε να δείτε τη σελίδα του sendmail που αφορά την http://www.sendmail.org/~ca/email/auth.html[πιστοποίηση αυθεντικότητας στο SMTP]. [[mail-agents]] == Προγράμματα Ταχυδρομείου για τον Χρήστη Ένα πρόγραμμα Αντιπροσώπου Ταχυδρομείου Χρήστη (Mail User Agent, MUA), είναι μια εφαρμογή που χρησιμοποιείται για την αποστολή και λήψη email. Επιπλέον, καθώς το email "εξελίσσεται" και γίνεται πιο πολύπλοκο, τα MUA γίνονται όλο και ισχυρότερα όσο αφορά τον τρόπο που αλληλεπιδρούν με το email. Αυτό δίνει στους χρήστες περισσότερες λειτουργίες και ευελιξία. To FreeBSD περιέχει υποστήριξη για μεγάλο αριθμό από προγράμματα ταχυδρομείου, και όλα μπορούν να εγκατασταθούν πολύ εύκολα μέσω της crossref:ports[ports,Συλλογής των Ports του FreeBSD]. Οι χρήστες μπορούν να επιλέξουν μεταξύ γραφικών προγραμμάτων, όπως το evolution ή το balsa, και προγράμματα κονσόλας όπως τα mutt, alpine ή `mail`, ή ακόμα και τις διεπαφές web που προσφέρονται από μερικούς μεγάλους οργανισμούς. [[mail-command]] === mail Το man:mail[1] είναι το προεπιλεγμένο πρόγραμμα ταχυδρομείου (MUA) in FreeBSD. Πρόκειται για ένα MUA κονσόλας, το οποίο προσφέρει όλες τις βασικές λειτουργίες που απαιτούνται για την αποστολή και λήψη email σε μορφή κειμένου, αν και έχει περιορισμένες δυνατότητες όσο αφορά συνημμένα αρχεία και υποστηρίζει μόνο τοπικές θυρίδες. Αν και το `mail` δεν υποστηρίζει εγγενώς τη λήψη email μέσω διακομιστών POP ή IMAP, είναι ωστόσο δυνατόν να κατεβάσετε τα email σε μια τοπική θυρίδα ([.filename]#mbox#) χρησιμοποιώντας κάποια εφαρμογή όπως το fetchmail, το οποίο θα συζητήσουμε αργότερα σε αυτό το κεφάλαιο (<>). Για την αποστολή και λήψη email, εκτελέστε την εντολή `mail`: [source,shell] .... % mail .... Τα περιεχόμενα της θυρίδας του χρήστη στον κατάλογο [.filename]#/var/mail# θα διαβαστούν αυτόματα από το πρόγραμμα `mail`. Αν η θυρίδα ταχυδρομείου είναι άδεια, το πρόγραμμα τερματίζεται με το μήνυμα ότι δεν βρέθηκε αλληλογραφία. Μετά την ανάγνωση της θυρίδας, ξεκινά η διεπαφή της εφαρμογής και εμφανίζεται μια λίστα με μηνύματα. Τα μηνύματα αριθμούνται αυτόματα, όπως φαίνεται στο παρακάτω παράδειγμα: [source,shell] .... Mail version 8.1 6/6/93. Type ? for help. "/var/mail/marcs": 3 messages 3 new >N 1 root@localhost Mon Mar 8 14:05 14/510 "test" N 2 root@localhost Mon Mar 8 14:05 14/509 "user account" N 3 root@localhost Mon Mar 8 14:05 14/509 "sample" .... Τα μηνύματα μπορούν πλέον να διαβαστούν με την εντολή kbd:[t] της εντολής `mail`, ακολουθούμενη με τον αριθμό του mail που θέλετε να εμφανιστεί. Στο παράδειγμα αυτό θα διαβάσουμε το πρώτο μήνυμα: [source,shell] .... & t 1 Message 1: From root@localhost Mon Mar 8 14:05:52 2004 X-Original-To: marcs@localhost Delivered-To: marcs@localhost To: marcs@localhost Subject: test Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST) From: root@localhost (Charlie Root) This is a test message, please reply if you receive it. .... Όπως φαίνεται στο παραπάνω παράδειγμα, η χρήση του πλήκτρου kbd:[t] θα προκαλέσει την εμφάνιση του μηνύματος με πλήρεις επικεφαλίδες. Για να δείτε ξανά τη λίστα με τα μηνύματα, χρησιμοποιήστε το πλήκτρο kbd:[h]. Αν το mail απαιτεί απάντηση, μπορείτε να χρησιμοποιήσετε την εντολή `mail` χρησιμοποιώντας τις ενσωματωμένες εντολές kbd:[R] ή kbd:[r]. Το πλήκτρο kbd:[R] οδηγεί το `mail` να απαντήσει μόνο στον αποστολέα του μηνύματος, ενώ το kbd:[r] απαντάει όχι μόνο στον αποστολέα, αλλά σε όλους τους παραλήπτες του μηνύματος. Μπορείτε επίσης να προσθέσετε μετά από τις εντολές αυτές, τον αριθμό του μηνύματος στο οποίο θέλετε να απαντήσετε. Αφού το κάνετε αυτό, θα πρέπει να γράψετε την απάντηση σας και να σημειώσετε το τέλος της γράφοντας μια μόνο kbd:[.] σε μια νέα γραμμή. Μπορείτε να δείτε ένα παράδειγμα παρακάτω: [source,shell] .... & R 1 To: root@localhost Subject: Re: test Thank you, I did get your email. . EOT .... Για να στείλετε νέο mail, θα πρέπει να χρησιμοποιήσετε το πλήκτρο kbd:[m], ακολουθούμενο από την διεύθυνση του παραλήπτη. Μπορείτε να δώσετε πολλαπλούς παραλήπτες, χωρίζοντας μεταξύ τους τις διευθύνσεις με kbd:[,]. Μπορείτε έπειτα να βάλετε το θέμα του μηνύματος και να συνεχίσετε με το περιεχόμενο. Το τέλος του μηνύματος καθορίζεται γράφοντας μια μοναδική kbd:[.] σε μια νέα γραμμή. [source,shell] .... & mail root@localhost Subject: I mastered mail Now I can send and receive email using mail ... :) . EOT .... Όσο βρίσκεστε μέσα στην εντολή `mail`, μπορείτε να χρησιμοποιήσετε το πλήκτρο kbd:[?] για την εμφάνιση βοήθειας οποιαδήποτε στιγμή. Μπορείτε επίσης να συμβουλευτείτε την σελίδα manual του man:mail[1] για περισσότερες πληροφορίες σχετικά με την εντολή `mail`. [NOTE] ==== Όπως αναφέραμε προηγουμένως, η εντολή man:mail[1] δεν σχεδιάστηκε αρχικά για να χειρίζεται συνημμένα, και για το λόγο αυτό οι δυνατότητες τις στο συγκεκριμένο θέμα είναι μικρές. Νεώτερα MUA, όπως το mutt, χειρίζονται τα συνημμένα με πολύ πιο έξυπνο τρόπο. Αλλά αν παρ' όλα αυτά επιθυμείτε να χρησιμοποιήσετε την εντολή `mail`, μάλλον θα σας φανεί χρήσιμο το port package:converters/mpack[]. ==== [[mutt-command]] === mutt Το mutt είναι ένα μικρό, αλλά πολύ ισχυρό πρόγραμμα αποστολής και λήψης mail, με εξαιρετικά χαρακτηριστικά τα οποία περιλαμβάνουν: * Την ικανότητα να δείχνει μηνύματα με την μορφή συζητήσεων * Υποστήριξη PGP για ψηφιακή υπογραφή και κρυπτογράφηση email * Υποστήριξη MIME * Υποστήριξη Maildir * Εξαιρετικές δυνατότητες παραμετροποίησης Όλες αυτές οι δυνατότητες, κάνουν το mutt ένα από τα πιο εξελιγμένα διαθέσιμα προγράμματα ταχυδρομείου. Δείτε την τοποθεσία http://www.mutt.org[http://www.mutt.org] για περισσότερες πληροφορίες σχετικά με το mutt. Μπορείτε να εγκαταστήσετε τη σταθερή έκδοση του mutt μέσω του port package:mail/mutt[], ενώ και η τρέχουσα υπό εξέλιξη έκδοση είναι διαθέσιμη μέσω του port package:mail/mutt-devel[]. Μετά την εγκατάσταση του port, μπορείτε να εκτελέσετε το mutt, με την ακόλουθη εντολή: [source,shell] .... % mutt .... Το mutt θα διαβάσει αυτόματα τα περιεχόμενα της θυρίδας ταχυδρομείου χρήστη στον κατάλογο [.filename]#/var/mail#, και θα δείξει τα περιεχόμενα του αν αυτό είναι εφικτό. Αν δεν υπάρχουν mails στη θυρίδα του χρήστη, το mutt θα εισέλθει σε κατάσταση αναμονής εντολών. Το παρακάτω παράδειγμα, δείχνει το mutt να απεικονίζει μια λίστα μηνυμάτων: image::mutt1.png[] Για να διαβάσετε ένα email, επιλέξτε το χρησιμοποιώντας τα βελάκια, και πιέστε kbd:[Enter]. Μπορείτε να δείτε ένα παράδειγμα απεικόνισης mail από το mutt παρακάτω: image::mutt2.png[] Όπως και το man:mail[1], το mutt, σας επιτρέπει να απαντήσετε τόσο στον αποστολέα του μηνύματος, όσο και σε όλους τους παραλήπτες. Για να απαντήσετε μόνο στον αποστολέα του email, χρησιμοποιήστε το πλήκτρο kbd:[r]. Για να απαντήσετε στην ομάδα χρηστών η οποία περιλαμβάνει τόσο τον αρχικό αποστολέα, όσο και τους υπόλοιπους παραλήπτες του μηνύματος, χρησιμοποιήστε το πλήκτρο kbd:[g]. [NOTE] ==== Το mutt χρησιμοποιεί το man:vi[1] ως συντάκτη κειμένου για δημιουργία και απάντηση σε email. Η ρύθμιση αυτή μπορεί να αλλαχθεί από το χρήστη δημιουργώντας ή τροποποιώντας το αρχείο [.filename]#.muttrc# στον προσωπικό του κατάλογο, και θέτοντας τη μεταβλητή `editor`, ή αλλάζοντας την μεταβλητή περιβάλλοντος `EDITOR`. Δείτε την τοποθεσία http://www.mutt.org/[http://www.mutt.org/] για περισσότερες πληροφορίες σχετικά με τη ρύθμιση του mutt. ==== Για να συντάξετε ένα νέο μήνυμα, πιέστε το πλήκτρο kbd:[m]. Αφού γράψετε το κατάλληλο θέμα, το mutt θα ξεκινήσει το man:vi[1] επιτρέποντας σας να γράψετε το mail. Μόλις ολοκληρώσετε, αποθηκεύστε και τερματίστε το `vi` και το mutt θα συνεχίσει, δείχνοντας σας μια οθόνη περίληψης του mail το οποίο πρόκειται να σταλεί. Για να στείλετε το mail, πιέστε το πλήκτρο kbd:[y]. Μπορείτε να δείτε παρακάτω ένα παράδειγμα της οθόνης περίληψης: image::mutt3.png[] Το mutt περιέχει επίσης εκτεταμένη βοήθεια, στην οποία μπορείτε να έχετε πρόσβαση σχεδόν από κάθε σημείο του μενού, πιέζοντας το πλήκτρο kbd:[?]. Η γραμμή στην κορυφή της οθόνης δείχνει επίσης τις συντομεύσεις πληκτρολογίου, όπου υπάρχουν. [[alpine-command]] === alpine Το alpine απευθύνεται κυρίως στον αρχάριο χρήστη, αλλά περιλαμβάνει επίσης κάποια προχωρημένα χαρακτηριστικά. [WARNING] ==== Το alpine έχει ιστορικό προβλημάτων ασφαλείας. Στο παρελθόν, ανακαλύφθηκαν προβλήματα που επέτρεπαν σε απομακρυσμένους εισβολείς να εκτελέσουν το δικό τους κώδικα στο τοπικό σύστημα, στέλνοντας απλώς ένα ειδικά διαμορφωμένο email. Όλα αυτά τα _γνωστά_ προβλήματα έχουν πλέον διορθωθεί, αλλά ο κώδικας του alpine είναι γραμμένος με ιδιαίτερα ανασφαλή τρόπο, και ο Υπεύθυνος Ασφάλειας του FreeBSD, πιστεύει ότι είναι αρκετά πιθανόν να υπάρχουν και άλλα κενά ασφαλείας που δεν έχουν ανακαλυφθεί ακόμα. Εγκαταστήστε το alpine με δική σας ευθύνη. ==== Η τρέχουσα έκδοση του alpine μπορεί να εγκατασταθεί χρησιμοποιώντας το port package:mail/alpine[]. Μετά την εγκατάσταση του port το alpine μπορεί να ξεκινήσει χρησιμοποιώντας την παρακάτω εντολή: [source,shell] .... % alpine .... Την πρώτη φορά που θα εκτελέσετε το alpine θα σας δείξει μια αρχική σελίδα χαιρετισμού, με μια σύντομη εισαγωγή, καθώς και μια αίτηση από την ομάδα ανάπτυξης του alpine να τους στείλετε ένα ανώνυμο mail το οποίο θα τους βοηθήσει να έχουν μια ιδέα για το πόσοι χρήστες χρησιμοποιούν το λογισμικό. Για να στείλετε αυτό το ανώνυμο μήνυμα, πιέστε kbd:[Enter], ή εναλλακτικά πιέστε kbd:[E] για να κλείσετε την οθόνη χαιρετισμού χωρίς να στείλετε το ανώνυμο μήνυμα. Ένα παράδειγμα της σελίδας χαιρετισμού φαίνεται παρακάτω: image::pine1.png[] Θα εμφανιστεί κατόπιν το κύριο μενού, στο οποίο μπορείτε να μετακινηθείτε εύκολα χρησιμοποιώντας τα βελάκια. Αυτό το κύριο μενού παρέχει πλήκτρα συντόμευσης για δημιουργία νέων mail, για ανίχνευση στους καταλόγους mail, και ακόμα για διαχείριση καταχωρήσεων στο βιβλίο διευθύνσεων. Κάτω από το κύριο μενού, εμφανίζονται συντομεύσεις πληκτρολογίου σχετικές με την εργασία που γίνεται τη συγκεκριμένη στιγμή. Ο προεπιλεγμένος κατάλογος που ανοίγει το alpine είναι το [.filename]#inbox#. Για να δείτε το ευρετήριο των μηνυμάτων, πιέστε το kbd:[I], ή επιλέξτε το [.guimenuitem]#MESSAGE INDEX# όπως φαίνεται παρακάτω: image::pine2.png[] Το ευρετήριο μηνυμάτων δείχνει μηνύματα από τον τρέχοντα κατάλογο, και μπορείτε να μετακινηθείτε σε αυτό με τα βελάκια. Μπορείτε να διαβάσετε το επιλεγμένο μήνυμα, πιέζοντας το πλήκτρο kbd:[Enter]. image::pine3.png[] Στην εικόνα που φαίνεται παρακάτω, το alpine απεικονίζει ένα υπόδειγμα μηνύματος. Στο κάτω μέρος της οθόνης φαίνονται σχετικές συντομεύσεις πληκτρολογίου. Ένα παράδειγμα τέτοιας συντόμευσης, είναι το πλήκτρο kbd:[r] το οποίο λέει στο MUA να δημιουργήσει απάντηση προς το τρέχον μήνυμα που απεικονίζεται. image::pine4.png[] Η απάντηση σε ένα mail μέσω του alpine γίνεται με τη χρήση του συντάκτη κειμένου pico, ο οποίος εγκαθίσταται από προεπιλογή μαζί με το alpine. Το pico διευκολύνει τη μετακίνηση μέσα στο μήνυμα, και είναι κάπως πιο εύκολο για τους αρχάριους χρήστες σε σχέση με το man:vi[1] ή το man:mail[1]. Μόλις ολοκληρώσετε την απάντηση, μπορείτε να στείλετε το μήνυμα πιέζοντας τα πλήκτρα kbd:[Ctrl+X]. Το alpine θα σας ζητήσει να το επιβεβαιώσετε. image::pine5.png[] Μπορείτε να προσαρμόσετε το alpine με τη χρήση της επιλογής [.guimenuitem]#SETUP# από το κύριο μενού. Συμβουλευθείτε την τοποθεσία http://www.washington.edu/alpine/[http://www.washington.edu/alpine/] για περισσότερες πληροφορίες. [[mail-fetchmail]] == Χρησιμοποιώντας το fetchmail Το fetchmail είναι ένας πλήρης πελάτης για IMAP και POP, ο οποίος επιτρέπει στους χρήστες να κατεβάζουν αυτόματα mail από απομακρυσμένους εξυπηρετητές IMAP και POP και να το αποθηκεύουν σε τοπικές θυρίδες, από όπου μπορεί έπειτα να υπάρχει πιο εύκολη πρόσβαση. Το fetchmail μπορεί να εγκατασταθεί χρησιμοποιώντας το port package:mail/fetchmail[] και παρέχει διάφορα χαρακτηριστικά, μερικά από τα οποία περιλαμβάνουν: * Υποστήριξη των πρωτοκόλλων POP3, APOP, KPOP, IMAP, ETRN και ODMR. * Δυνατότητα προώθησης email μέσω SMTP, το οποίο επιτρέπει τη φυσιολογική λειτουργία του φιλτραρίσματος, της προώθησης, και των παρωνυμίων (aliases). * Μπορεί να λειτουργήσει σε κατάσταση δαίμονα, ώστε να ελέγχει περιοδικά για νέα μηνύματα. * Μπορεί να ανακτά πολλαπλές θυρίδες και να τις προωθεί, ανάλογα με τις ρυθμίσεις του, σε διαφορετικούς τοπικούς χρήστες. Αν και είναι έξω από τους σκοπούς αυτού του κειμένου να εξηγήσει όλες τις δυνατότητες του fetchmail, θα αναφερθούμε σε κάποιες βασικές λειτουργίες. Το fetchmail χρησιμοποιεί ένα αρχείο ρυθμίσεων γνωστό ως [.filename]#.fetchmailrc#, για να λειτουργήσει σωστά. Το αρχείο αυτό περιέχει τις πληροφορίες του εξυπηρετητή αλλά και τα στοιχεία εισόδου του χρήστη. Λόγω των ευαίσθητων πληροφοριών του αρχείου αυτού, σας συμβουλεύουμε να χρησιμοποιήσετε την παρακάτω εντολή ώστε η ανάγνωση του να επιτρέπεται μόνο από τον ιδιοκτήτη του: [source,shell] .... % chmod 600 .fetchmailrc .... Το [.filename]#.fetchmailrc# που φαίνεται παρακάτω είναι ένα παράδειγμα με το οποίο μπορείτε να κατεβάσετε τη θυρίδα ενός χρήστη μέσω του πρωτοκόλλου POP. Κατευθύνει το fetchmail να συνδεθεί στο `example.com` χρησιμοποιώντας όνομα χρήστη `joesoap` και κωδικό `XXX`. Το παράδειγμα υποθέτει ότι ο χρήστης `joesoap` είναι επίσης και χρήστης του τοπικού συστήματος. [.programlisting] .... poll example.com protocol pop3 username "joesoap" password "XXX" .... Το επόμενο παράδειγμα, δείχνει σύνδεση σε πολλαπλούς POP και IMAP εξυπηρετητές, και ανακατευθύνει σε διαφορετικούς τοπικούς χρήστες όπου είναι απαραίτητο: [.programlisting] .... poll example.com proto pop3: user "joesoap", with password "XXX", is "jsoap" here; user "andrea", with password "XXXX"; poll example2.net proto imap: user "john", with password "XXXXX", is "myth" here; .... Το βοηθητικό πρόγραμμα fetchmail μπορεί να λειτουργήσει σε κατάσταση δαίμονα, αν το εκτελέσετε με την επιλογή `-d`, ακολουθούμενη από ένα διάστημα (σε δευτερόλεπτα) το οποίο θα χρησιμοποιηθεί για να ερωτώνται οι εξυπηρετητές που είναι καταχωρημένοι στο αρχείο [.filename]#.fetchmailrc#. Το παρακάτω παράδειγμα οδηγεί το fetchmail να ανιχνεύει για νέο mail κάθε 600 δευτερόλεπτα: [source,shell] .... % fetchmail -d 600 .... Μπορείτε να βρείτε περισσότερες πληροφορίες για το fetchmail στην τοποθεσία http://fetchmail.berlios.de/[http://fetchmail.berlios.de/]. [[mail-procmail]] == Χρησιμοποιώντας το procmail Το βοηθητικό πρόγραμμα procmail είναι μια απίστευτα ισχυρή εφαρμογή που μπορεί να χρησιμοποιηθεί για το φιλτράρισμα του εισερχόμενου mail. Επιτρέπει στους χρήστες να ορίζουν "κανόνες" οι οποίοι μπορεί να ταιριάζουν σε εισερχόμενα mail και να εκτελούν διάφορες λειτουργίες, ή να ανακατευθύνουν το mail σε εναλλακτικές θυρίδες ή / και διευθύνσεις ταχυδρομείου. Το procmail μπορεί να εγκατασταθεί χρησιμοποιώντας το port package:mail/procmail[]. Μετά την εγκατάσταση του, μπορεί να ενσωματωθεί σχεδόν σε οποιοδήποτε MTA. Συμβουλευθείτε την τεκμηρίωση του MTA που χρησιμοποιείτε για περισσότερες πληροφορίες. Εναλλακτικά, μπορείτε να ενσωματώσετε το procmail προσθέτοντας την ακόλουθη γραμμή σε ένα αρχείο [.filename]#.forward# στον κατάλογο του χρήστη, χρησιμοποιώντας τις δυνατότητες του procmail: [.programlisting] .... "|exec /usr/local/bin/procmail || exit 75" .... Στην παρακάτω ενότητα, θα δείξουμε μερικούς από τους βασικούς κανόνες του procmail, καθώς και σύντομες περιγραφές της λειτουργίας τους. Πρέπει να τοποθετήσετε αυτούς (και άλλους) κανόνες σε ένα αρχείο [.filename]#.procmailrc#, το οποίο θα πρέπει να βρίσκεται μέσα στον κατάλογο του χρήστη: Μπορείτε να βρείτε τους περισσότερους από αυτούς τους κανόνες, στη σελίδα manual του man:procmailex[5]. Προώθηση όλου του email της διεύθυνσης mailto:user@example.com[user@example.com] προς την εξωτερική διεύθυνση mailto:goodmail@example2.com[goodmail@example2.com]: [.programlisting] .... :0 * ^From.*user@example.com ! goodmail@example2.com .... Προώθηση όλων των email που είναι μικρότερα από 1000 bytes προς μια εξωτερική διεύθυνση email mailto:goodmail@example2.com[goodmail@example2.com]: [.programlisting] .... :0 * < 1000 ! goodmail@example2.com .... Αποστολή όλου του mail που στάλθηκε προς το mailto:alternate@example.com[alternate@example.com] σε μια θυρίδα που καλείται [.filename]#alternate#: [.programlisting] .... :0 * ^TOalternate@example.com alternate .... Αποστολή όλου του mail με θέμα "Spam" προς το [.filename]#/dev/null#: [.programlisting] .... :0 ^Subject:.*Spam /dev/null .... Μια χρήσιμη λύση που ξεχωρίζει τα email από τις λίστες ταχυδρομείου `FreeBSD.org` και τοποθετεί το κάθε μήνυμα σε διαφορετική θυρίδα: [.programlisting] .... :0 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG { LISTNAME=${MATCH} :0 * LISTNAME??^\/[^@]+ FreeBSD-${MATCH} } .... diff --git a/documentation/content/hu/books/handbook/mail/_index.adoc b/documentation/content/hu/books/handbook/mail/_index.adoc index 27f0f330db..f05c1eca3e 100644 --- a/documentation/content/hu/books/handbook/mail/_index.adoc +++ b/documentation/content/hu/books/handbook/mail/_index.adoc @@ -1,1161 +1,1161 @@ --- title: 28. Fejezet - Elektronikus levelezés part: IV. Rész Hálózati kommunikáció prev: books/handbook/ppp-and-slip next: books/handbook/network-servers showBookMenu: true weight: 32 path: "/books/handbook/" --- [[mail]] = Elektronikus levelezés :doctype: book :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: 28 :partnums: :source-highlighter: rouge :experimental: :images-path: books/handbook/mail/ ifdef::env-beastie[] ifdef::backend-html5[] :imagesdir: ../../../../images/{images-path} endif::[] ifndef::book[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] toc::[] endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] toc::[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [[mail-synopsis]] == Áttekintés Az "elektronikus levelezés", más néven e-mail, a kommunikáció egyik legjobban elterjedt formája. Ebben a fejezetben bemutatjuk, hogyan futtassunk FreeBSD-n levelezõ szervert, illetve hogyan küldjünk és fogadjunk e-maileket a FreeBSD használatával. Ez azonban semmiképpen sem tekinthetõ egy teljes referenciának és tulajdonképpen számos fontos tényezõrõl szót sem ejtünk. A témára úgy kaphatunk egy sokkal átfogóbb rálátást, ha a crossref:bibliography[bibliography,Irodalomjegyzék]ben felsorolt remek könyveket is elolvassuk. A fejezet elolvasása során megismerjük: * milyen szoftverkomponensek játszanak szerepet az elektronikus levelek küldésében és fogadásában; * FreeBSD-ben hol találhatóak a sendmail konfigurációs állományai; * mi a különbség a helyi és távoli postaládák között; * hogyan akadályozzuk meg, hogy a levelezõ szerverünk a kéretlen levélszemetet továbbítson; * rendszerünkön hogyan telepítsünk és állítsunk be más levelezõ szervereket a sendmail helyett; * hogyan oldjuk meg a levelezõ szerverekkel kapcsolatban felmerülõ általános problémákat; * hogyan használjuk az SMTP protokollt az UUCP protokollal; * hogyan kell rendszerüket csak levélküldésre beállítani; * hogyan levelezzünk betárcsázós kapcsolattal; * hogyan növeljük rendszerünk védelmét az SMTP hitelesítésének engedélyezésével; * hogyan telepítsünk és használjunk a levelek küldésére és fogadására például a mutthoz hasonló levelezõ klienseket; * hogyan töltsük le leveleinket egy távoli POP vagy IMAP szerverrõl; * hogyan alkalmazzunk automatikusan adott szabályokat vagy szûrõket az érkezõ levelekre. A fejezet elolvasása elõtt ajánlott: * az internet-csatlakozásunk megfelelõ beállítása (crossref:advanced-networking[advanced-networking,Egyéb haladó hálózati témák]); * a névfeloldás beállítása (crossref:network-servers[network-servers,Hálózati szerverek]); * a külsõ fejlesztésû alkalmazások telepítésének ismerete (crossref:ports[ports,Alkalmazások telepítése. csomagok és portok]). [[mail-using]] == Az elektronikus levelezés használata Öt fontosabb részre bonthatjuk a levelezést. Ezek: <>, <>, <>, <> és természetesen <>. [[mail-mua]] === A felhasználói program Ide soroljuk a különbözõ parancssoros programokat, mint például a mutt, pine, elm és `mail`, valamint a különféle grafikus alkalmazásokat, mint például a balsa és az xfmail, csak hogy felsoroljuk néhány újabb, egy webböngészõhöz hasonlóan "kifinomult" eszközt is. Ezek a programok egyszerûen átküldik az elektronikus levelekkel kapcsolatos tranzakciókat a helyi <> vagy meghívják valamelyik <>, esetleg közvetlenül a TCP protokollon keresztül kézbesítenek. [[mail-mta]] === A levélküldõ démon A FreeBSD alapból a sendmail nevû programot ajánlja fel erre a célra, de támogat más levelezõ szervereket is, ezek közül meg is említünk néhányat ízelítõként: * exim * postfix * qmail Ez a démon általában két feladatot lát el - a beérkezõ levelek fogadásáért és a kimenõ levelek elküldéséért felelõs. _Nem_ tartozik azonban a feladatai közé, hogy a POP vagy IMAP protokollokhoz hasonlóan olvashatóvá tegye a leveleinket, illetve csatlakozni engedjen a helyi [.filename]#mbox# vagy Maildir formátumú postaládáinkhoz. Ezekhez a mûveletekhez egy külön <> szükségeltetik. [WARNING] ==== A sendmail régebbi változatai tartalmaznak olyan komoly biztonsági hibákat, amelyek kihasználásával az illetéktelen behatolók helyi és/vagy távoli hozzáférést tudnak szerezni a gépünkön. Az ilyen jellegû problémák elkerülése érdekében igyekezzünk mindig a legfrissebb verzióját használni. Vagy a crossref:ports[ports,FreeBSD Portgyûjteményébõl] telepítsünk fel egy másik levélküldõ démont. ==== [[mail-dns]] === Az elektronikus levelek és a névfeloldás A névfeloldás (Domain Name System, DNS) és a hozzá tartozó `named` démon nagy szerepet játszik az elektronikus levelek továbbításában. A démon a leveleket úgy küldi át az egyik géprõl a másikra, hogy a névfeloldáson keresztül megkeresi azt a távoli gépet, amelynek a leveleket címezték. Ez a folyamat szintén végbemegy, amikor egy távoli géprõl levelet küldenek a mi szerverünkre. A DNS valósítja meg a hálózati nevek és az IP-címek összerendelését valamint ez tárolja el a levélküldésre vonatkozó információkat is, amelyeket MX rekordoknak hívnak. Az MX (Mail eXchanger, "levélváltó") rekord adja meg azt a gépet vagy azokat a gépeket, amelyek az adott névtartományban fogadják a leveleket. Ha a hálózati nevünkhöz vagy tartományunkhoz nem tartozik MX rekord, akkor a levél közvetlenül a gépünkre vándorol feltéve, hogy rendelkezik olyan A rekorddal, amely összerendeli a gépünk nevét az IP-címével. A man:host[1] parancs használatával az alábbi példához hasonlóan tetszõleges tartomány MX rekordját meg tudjuk nézni: [source,shell] .... % host -t mx FreeBSD.org FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org .... [[mail-receive]] === Az elektronikus levelek fogadása A tartományunkhoz tartozó leveleket fogadását a levelezõ szerver végzi. Összegyûjti a tartományunkba küldött összes levelet és ezeket a beállításainktól függõen vagy [.filename]#mbox# (a levelek tárolásának alapértelmezett módja) vagy pedig Maildir formátumban eltárolja. Ahogy eltárolt egy levelet, úgy helyben egybõl el is tudjuk olvasni például a man:mail[1] vagy a mutt használatával, illetve távolról a POP vagy IMAP és a hasonló protokollokkal tudjuk elérni és begyûjteni. Ezért tehát ha csak a helyi gépen kívánjuk olvasni a leveleinket, akkor ahhoz egyáltalán nem kell POP vagy IMAP szervert telepítenünk. [[pop-and-imap]] ==== Távoli postaládák elérése a POP és IMAP használatával A távoli postaládák eléréséhez tudnunk kell csatlakozni egy POP vagy IMAP szerverhez. Ezeken a protokollokon keresztül tudják a felhasználók minden különösebb nehézség nélkül elérni távolról a helyi postaládáikat. Noha a POP és az IMAP segítségével egyaránt el tudjuk így érni a postaládákat, az IMAP használatának mégis több elõnye van, íme néhány közülük: * Az IMAP a levelek leszedése mellett tárolni is képes a távoli szerveren. * Az IMAP támogat párhuzamos lekéréseket. * Az IMAP hihetetlenül hasznos tud lenni lassabb összeköttetések esetében, mivel lehetõvé teszi a felhasználók számára, hogy csak az üzenetek vázát töltsék le és ne az egészet. Továbbá a szerver és a kliens közti adatmozgás csökkentése érdekében képes bizonyos feladatokat a szerveren elvégezni, például keresni. Egy POP vagy IMAP szerver telepítéséhez az alábbi lépések megtétele szükséges: [.procedure] ==== . Válasszuk ki az igényeinket legjobban kielégítõ IMAP vagy POP szervert. A következõ POP és IMAP szerverek eléggé elterjedtek és egyben remek példák: + ** qpopper ** teapop ** imap-uw ** courier-imap + . A Portgyûjteménybõl telepítsük fel a kiválasztott POP vagy IMAP démont. . Ha szükséges, akkor a POP vagy IMAP szerver betöltéséhez írjuk át az [.filename]#/etc/inetd.conf# állományt. ==== [WARNING] ==== Meg kell említenünk, hogy mind a POP és az IMAP az összes információt, tehát belértve a felhasználók neveit és jelszavait titkosítatlan formában továbbítja. Ez azt jelenti, hogy ha ezeket a protokollokat biztonságos módon szeretnénk elérni, akkor az man:ssh[1] használatával hozzunk létre hozzá egy tunnelt és azon keresztül használjuk. Errõl részletesebben a crossref:security[security-ssh-tunneling,Tunnelezés SSH-val]ban olvashatunk. ==== [[local]] ==== A helyi postaládák elérése A helyi postaládákat a szerveren levõ levelezõ kliensek közvetlen használatával érhetjük el. Ilyen alkalmazások például a mutt vagy a man:mail[1]. [[mail-host]] === A levelezõ szerver A levelezõ szerver az a szerver, amely a gépünk vagy akár az egész hálózatunk irányába érkezõ levelek fogadásáért és elküldéséért felelõs. [[sendmail]] == A sendmail beállítása A man:sendmail[8] a FreeBSD alapértelmezett levéltovábbító ügynöke (Mail Transfer Agent, MTA). A sendmail feladata fogadni a levelezõ kliensektõl (Mail User Agent, MUA) érkezõ leveleket és kézbesíteni azokat a konfigurációs állományában megadott megfelelõ levelezõnek. A sendmail hálózati kapcsolatokat is fogad, képes a helyi postaládákba vagy akár más programoknak is leveleket továbbítani. A sendmail a következõ állományban tárolja beállításait: [.informaltable] [cols="1,1", frame="none", options="header"] |=== | Állomány | Szerep |[.filename]#/etc/mail/access# |A sendmail által engedélyezett hozzáféréseket tároló adatbázis |[.filename]#/etc/mail/aliases# |A postaládák álnevei |[.filename]#/etc/mail/local-host-names# |Azon nevek felsorolása, amelyek számára a sendmail leveleket fogad |[.filename]#/etc/mail/mailer.conf# |A levelezõ programok beállításai |[.filename]#/etc/mail/mailertable# |A levelezõ programok kézbesítési táblázata |[.filename]#/etc/mail/sendmail.cf# |A sendmail központi beállításait tároló állomány |[.filename]#/etc/mail/virtusertable# |Virtuális felhasználók és tartományok táblázatai |=== === [.filename]#/etc/mail/access# Az engedélyezett hozzáféréseket tároló adatbázis tartalmazza milyen hálózati neveken vagy IP-címeken lehet elérni a helyi levelezõ szervert és azok milyen típusú hozzáférést kapnak. A gépek az `OK` (rendben), `REJECT` (visszautasít), `RELAY` (továbbítás) beállításokat alkalmazhatjuk, vagy egyszerûen meghívhatjuk hozzájuk a sendmail hibakezelõ rutinját egy adott kézbesítési hibával. Ha egy gépet az `OK` beállítással veszük fel a listára, ami egyébként alapértelmezés, akkor ez a gép levelet tud küldeni egészen addig, amíg a végsõ cél a helyi gép marad. A `REJECT` beállítással felsorolt gépek számára semmiféle levelezés nem engedélyezett. Ha pedig egy gép mellett a `RELAY` beállítás jelenik meg, akkor a szerveren keresztül tetszõleges címre küldhet. .A sendmail elérését szabályozó adatbázis beállítása [example] ==== [.programlisting] .... cyberspammer.com 550 Nem szeretjuk a spammereket FREE.STEALTH.MAILER@ 550 Nem szeretjuk a spammereket another.source.of.spam REJECT okay.cyberspammer.com OK 128.32 RELAY .... ==== Ebben a példában öt bejegyzést láthatunk. A táblázat bal felének valamelyik sorára illeszkedõ küldõkre a táblázatban a sor jobb felén megjelenõ cselekvés érvényesül. Az elsõ két sorban a sendmail hibakezelõ rutinjának adunk át hibakódokat. A hozzá tartozó üzenet akkor fog megjelenni a távoli gépen, amikor a tõle érkezõ levél illeszkedik a bal oldali szabályra. Az ezeket követõ bejegyzésben visszalökünk minden olyan levelet, amely az internetrõl egy adott számítógéptõl érkezik, például az `another.source.of.spam` címrõl. A következõ bejegyzésben az `okay.cyberspammer.com` címrõl elfogadjuk a kapcsolódást, ami viszont sokkal pontosabb megjelölés a fentebb szereplõ `cyberspammer.com` sornál. A pontosabban kifejtett nevek felülbírálják a kevésbé pontosan megnevezetteket. Végül az utolsó bejegyzésben engedélyezzük a levelek továbbküldését minden olyan gép számára, amelynek címe a `128.32` elõtaggal kezdõdik. Ezek tehát képesek ezen a levelezõ szerveren keresztül bárhova leveleket küldeni. Az állomány módosítása után az adatbázis frissítéséhez mindig le kell futtatnunk egy `make` parancsot az [.filename]#/etc/mail/# könyvtárban. === [.filename]#/etc/mail/aliases# Az álneveket tartalmazó adatbázis virtuális postaládákat sorol fel, amelyek más felhasználókra, állományokra, programokra vagy további álnevekre vonatkozhatnak. Íme néhány példa az [.filename]#/etc/mail/aliases# állományban szereplõ bejegyzésekre: .Virtuális postaládák [example] ==== [.programlisting] .... root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail" .... ==== A formai szabályok egyszerûek: a kettõspont bal oldalára kell írni azt a postaládát, amely a jobb oldalán levõ célokra bomlik. A példa elsõ sorában egyszerûen megfeleltetjük a `root` postaládáját a `localuser` postaládájának, majd ezt a nevet keressük az álnevek adatbázisában. Ha nem találunk már rá illeszkedést, akkor az üzenetet a `localuser` nevû helyi felhasználónak továbbítjuk. A következõ sorban címek listáját láthatjuk. Ennek megfelelõen a `ftp-bugs` postaláda címére küldött levelek három további helyi postaládára mennek tovább: ezek név szerint a `joe`, `eric` és `paul` felhasználók postaládái. Itt a távoli postaládák mailto:felhasználó@példa.hu[felhasználó@példa.hu] alakban adhatóak meg. A következõ sor az állományok használatát példázza, ahol konkrétan a [.filename]#/dev/null# állományba irányítjuk át az adott címre érkezõ leveleket. Az utolsó sorban pedig a programok használatára láthatunk példát, ahol ebben az esetben a levél egy UNIX(R)-os csövön keresztül a [.filename]#/usr/local/bin/procmail# szabványos bemenetére kerül. Ha megváltoztatjuk ezt az állományt, akkor utána az adatbázis frissítéséhez ne felejtsük el meghívni a `make` parancsot az [.filename]#/etc/mail/# könyvtárban. === [.filename]#/etc/mail/local-host-names# Ebben az állományban adhatjuk meg, hogy a man:sendmail[8] milyen hálózati neveket fogadjon el helyi hálózati névként. Ide kell raknunk azokat a tartományokat vagy címeket, amelyektõl a sendmail leveleket fogad el. Például, ha a levelezõ szerver az `minta.com` tartományból és a `level.minta.com` címrõl fogad el leveleket, akkor a [.filename]#local-host-names# valahogy így fog kinézni: [.programlisting] .... minta.com level.minta.com .... Az állomány módosításakor a man:sendmail[8] programot újra kell indítani a változások érvényesítéséhez. === [.filename]#/etc/mail/sendmail.cf# Ahogy a sendmail központi konfigurációs állománya, a [.filename]#sendmail.cf# irányítja a sendmail átfogó viselkedését, beleértve mindent az e-mail címek átírásától kezdve a távoli szervereknek küldött elutasító üzenetek küldéséig. Mivel ennyire sokfajta szerepet tölt be egyszerre, ezért ez a konfigurációs állomány meglehetõsen összetett és a részletezése meghaladná ennek a leírásnak a határait. Szerencsére az átlagos levelezõ szerverek esetében ezt az állományt nagyon ritkán kell módosítani. A sendmail központi konfigurációs állománya a sendmail lehetõségeit és viselkedését meghatározó man:m4[1] makrókból építhetõ fel. A pontosabb részleteket a [.filename]#/usr/src/contrib/sendmail/cf/README# állományban találjuk meg. Az állomány megváltoztatása után a módosítások érvényesítéséhez újra kell indítani a sendmail programot. === [.filename]#/etc/mail/virtusertable# A [.filename]#virtusertable# állomány képezi le a virtuális tartományokhoz tartozó címeket valódi postaládák címeire. Ezek a postaládák lehetnek helyiek, távoliak, az [.filename]#/etc/mail/aliases# állományban megadott álnevek vagy állományok. .Példa a virtuális tartományok leképezésére [example] ==== [.programlisting] .... root@minta.com root postmaster@minta.com postmaster@noc.minta.net @minta.com joe .... ==== A fenti példában megadtunk egy leképezést a `minta.com` tartományhoz. Ez az állomány úgy dolgozódik fel, hogy fentrõl lefelé illesztõdnek a címek, egészen az elsõ egyezésig. Az elsõ bejegyzés szerint a mailto:root@minta.com[root@minta.com] a helyi `root` felhasználó postaládájára képzõdik le. A következõ bejegyzés szerint a mailto:postmaster@minta.com[postmaster@minta.com] a `noc.minta.net` címen található `postmaster` nevû felhasználó postaládájára képzõdik le. Végezetül, ha a `minta.com` címrõl eddig még semmi sem illeszkedett volna, akkor az utolsó leképezés veszi át, amely az `minta.com` tartományon belül az összes többi címre küldött levelet a helyi `joe` nevû felhasználó postaládájára képezi le. [[mail-changingmta]] == A levéltovábbító ügynök megváltoztatása Ahogy arról már korábban szó esett, a FreeBSD alapból tartalmazza a sendmail programot mint levéltovábbító ügynököt (MTA, Mail Transfer Agent). Ennélfogva alapértelmezés szerint ez a felelõs a kimenõ és beérkezõ levelek kezeléséért. Számtalan okból eredõen egyes rendszergazdák azonban mégis szeretnék lecserélni a rendszerükhöz tartozó levéltovábbítót. Ennek oka lehet egyszerûen csak annyi, hogy ki akarunk próbálni egy másik programot vagy éppen egy olyan eszközre van szükségünk, amely kizárólag csak máshol található meg. Szerencsére a FreeBSD megkönnyíti ezt a váltást. === Az új levéltovábbító telepítése A levéltovábbítók széles köre elérhetõ. A crossref:ports[ports,FreeBSD Portgyûjteményébõl] elindulva sok ilyen programot találhatunk. Természetesen teljesen mindegy, hogy melyik levéltovábbítót választjuk egészen addig, amíg képesek vagyunk FreeBSD alatt rendesen futtatni. Kezdjük tehát az új levéltovábbító telepítésével. Miután sikerült telepíteni, lehetõségünk van eldönteni, hogy valóban eleget tesz-e az igényeinknek, sõt az új szoftvert még az elõtt be tudjuk állítani, hogy átvenné a sendmail helyét. Vigyázzunk azonban, hogy az új szoftver telepítésekor ne írjon felül olyan rendszerszintû binárisokat, mint például a [.filename]#/usr/bin/sendmail#. Másrészt az új levelezõ szoftvert szolgálatba helyezése elõtt mindenképpen fontos megfelelõen beállítanunk. A kiválasztott levéltovábbító beállításával kapcsolatban olvassuk el a hozzá tartozó dokumentációt. [[mail-disable-sendmail]] === A sendmail letiltása [WARNING] ==== Amikor letiltjuk a sendmail kimenõ levél szolgáltatását, soha ne felejtsük el pótolni valamilyen más levelezõ rendszerrel. Ha nem így cselekszünk, akkor például a man:periodic[8] és a hozzá hasonló programok nem lesznek képesek a tõlük megszokott módon e-mailben elküldeni a futásuk eredményét. A rendszer bizonyos részei ráadásul egy mûködõ, sendmail-kompatibilis rendszert feltételeznek. Ha letiltása után az alkalmazások továbbra is a sendmail segítségével próbálnak levelet küldeni, akkor ez a levél a sendmail inaktív sorába kerülhet, ahonnan soha nem kerül kézbesítésre. ==== A sendmail teljes leállításához, beleértve a kimenõ levelekhez tartozó szolgáltatást is, a következõket kell megadni az [.filename]#/etc/rc.conf# állományban: [.programlisting] .... sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" .... Ha csak a sendmail beérkezõ levelekre vonatkozó szolgáltatását akarjuk tiltani, akkor ahhoz az [.filename]#/etc/rc.conf# állományban a következõt állítsuk be: [.programlisting] .... sendmail_enable="NO" .... A sendmail indításával kapcsolatos további beállításokat az man:rc.sendmail[8] man oldalon találjuk. === Az új levéltovábbító elindítása a rendszerrel együtt Az új levéltovábbítót úgy tudjuk elindítani a rendszerrel együtt, ha az [.filename]#/etc/rc.conf# állományba felvesszük a következõ sort, például a postfix esetében: [source,shell] .... # echo 'postfix_enable="YES"' >> /etc/rc.conf .... Az új levéltovábbító így most már magától el fog indulni a rendszer indításakor. === A sendmail mint a rendszer alapértelmezett levelezõ eszközének lecserélése A sendmail annyira elterjedt szabványos szoftver a UNIX(R) rendszereken, hogy egyes szoftverek egyszerûen feltételezik a jelenlétét. Emiatt sok levéltovábbítóhoz tartozik egy sendmail kompatibilis parancssoros felület is, amellyel igyekeznek megkönnyíteni a sendmail"gyors" lecserélését. Ennek következtében tehát, ha egy másik levelezõ eszközt használunk, akkor valamilyen módon meg kell bizonyosodnunk róla, hogy a szabványos sendmail binárisok, mint például a [.filename]#/usr/bin/sendmail#, valóban a kiválasztott levéltovábbítot fogják aktiválni. Szerencsére a FreeBSD pontosan emiatt tartalmaz egy man:mailwrapper[8] nevû rendszert. Amikor a sendmail telepítése szerint mûködik, valami hasonlót fogunk találni az [.filename]#/etc/mail/mailer.conf# állományban: [.programlisting] .... sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail .... Ez azt jelenti, hogy amikor az itt felsorolt általános parancsok közül lefuttatjuk valamelyiket (például magát a [.filename]#sendmail# parancsot), akkor a rendszer magától meghívja a [.filename]#sendmail# néven szereplõ wrapper programot, amely pedig a [.filename]#mailer.conf# alapján kideríti, hogy az adott esetben a [.filename]#/usr/libexec/sendmail/sendmail# hívására van szükség. Ez a rendszer megkönnyíti az alapértelmezett [.filename]#sendmail# funkciók helyében lefuttatandó binárisok átállítását. Így tehát, ha a [.filename]#/usr/local/supermailer/bin/sendmail-compat# állományt akarjuk futtatni a megszokott sendmail helyében, akkor az [.filename]#/etc/mail/mailer.conf# állományt a következõképpen kell módosítanunk: [.programlisting] .... sendmail /usr/local/kedvenclevelezõ/bin/sendmail-compat send-mail /usr/local/kedvenclevelezõ/bin/sendmail-compat mailq /usr/local/kedvenclevelezõ/bin/mailq-compat newaliases /usr/local/kedvenclevelezõ/bin/newaliases-compat hoststat /usr/local/kedvenclevelezõ/bin/hoststat-compat purgestat /usr/local/kedvenclevelezõ/bin/purgestat-compat .... === A mûvelet befejezése Ahogy a céljainknak megfelelõen mindent beállítottunk, akkor vagy egyszerûen leállítjuk a sendmail neve alatt futó programokat és helyettük elindítjuk az új szoftverhez tartozókat, vagy csak újraindítjuk a gépet. Az újraindítással mellesleg ellenõrizhetjük azt is, hogy jól állítottuk be a rendszerünket és az új levélküldõ tényleg elindul a rendszerünkkel együtt. [[mail-trouble]] == A hibák elhárítása === Miért kell teljes hálózati neveket megadni a gépemen? Elõfordulhat, hogy a hivatkozni kívánt gép valójában egy másik tartományban szerepel. Például, ha az `ize.mize.edu` gépen vagyunk és a `vagyis` nevû gépet akarjunk innen elérni a `mize.edu` tartományban, akkor a teljes hálózati nevével, vagyis a `vagyis.mize.edu` néven kell rá hivatkoznunk, nem pedig egyszerûen csak `vagyis` néven. Régebben egyébként ezt a BSD-típusú BIND névfeloldók megengedték. A FreeBSD jelenlegi változatai azonban már olyan BIND verziót tartalmaznak, amelyek alapértelmezés szerint már nem engedik a tartományunkon kívüli relatív nevek használatát. Tehát a `vagyis` vagy a `vagyis.ize.mize.edu` gép lesz, vagy a legfelsõ, gyökér tartományban keresi a rendszer. Ez eltér a korábbi viselkedéstõl, ahol a keresés folytatódott a `vagyis.mize.edu` és `vagyis.edu` tartományokban is. Az RFC 1535 elolvasásából ki fog derülni, hogy miért nem vált be ez a gyakorlat és hogy miért tekinthetõ még akár biztonsági résnek is. Ezt a problémát egyébként megoldhatjuk annyival, hogy az [.filename]#/etc/resolv.conf# állományba a [.programlisting] .... search ize.mize.edu mize.edu .... sor helyett a [.programlisting] .... domain ize.mize.edu .... sort írjuk be. Arra viszont ügyeljünk, hogy a keresési rend ne lépje át a "helyi és nyilvános adminisztráció között meghúzódó határt", ahogy azt az RFC 1535 nevezi. === A sendmail szerint a levél a saját farkába harap Ezt a sendmail gyakran ismértelt kérdései között a következõképpen válaszolták meg: [.programlisting] .... A következõ hibaüzenetet kapom: 553 MX list for taromány.net points back to felé.tartomány.net 554 felhasználó@tartomány.net... Local configuration error Hogyan oldható meg ez a probléma? Azt kértük, hogy a tartományba (például tartomány.net) küldött levél az MXMX rekord rekord felhasználásával egy adott gépre legyen átirányítva (ebben az esetben ez a felé.tartomány.net), de a továbbítást végzõ gép nem ismeri fel magát a tartomány.net címen. Vegyük fel a tartomány.net tartományt az /etc/mail/local-host-names állományba [melyet a 8.10 elõtti verziókban /etc/sendmail.cw állománynak hívnak] (ha a FEATURE(use_cw_file) beállítást használjuk) vagy tegyük hozzá a Cw tartomány.net sort az /etc/mail/sendmail.cf állományhoz. .... A sendmail GYIK a http://www.sendmail.org/faq/[http://www.sendmail.org/faq/] címen található meg (angolul) és mindenképpen javasolt elolvasni, ha "fel szeretnénk piszkálni" a levelezõ rendszerünk beállításait. -=== Hogyan tudok levelezõ szervert futtatni egy betárcsázós PPPPPP kapcsolat esetében? +=== Hogyan tudok levelezõ szervert futtatni egy betárcsázós PPP kapcsolat esetében? Egy helyi hálózaton levõ FreeBSD-s gépet akarunk tehát az internethez kapcsolni. Ez a FreeBSD-s gép lesz a helyi hálózat leveleket továbbító átjárója. A PPP kapcsolat nem dedikált. Legalább két módon meg tudjuk oldani. Az egyik módszer szerint az UUCP használatára lesz szükségünk. A másik módszer szerint szereznünk kell egy éjjel-nappal üzemelõ internetes szervert, amely majd szolgáltatja a másodlagos MX rekordot a tartományunkhoz. Például, ha a cégünk tartománya a `_cég.hu_` és az internet-szolgáltatónk a `_szolgáltató.net_` névre beállította a tartományunkhoz a másodlagos MX rekordokat: [.programlisting] .... cég.hu. MX 10 cég.hu. MX 20 szolgáltató.net. .... Végsõ címzettként csak egy gépet kell megadni (az [.filename]#/etc/mail/sendmail.cf# állományba a `_cég.hu_` címhez tegyük hozzá a `Cw cég.hu` sort). Amikor a leveleket küldeni akaró `sendmail` megpróbál kézbesíteni, elõször hozzánk (`_cég.hu_`) próbál csatlakozni a modemes összeköttetésen keresztül. Ez valószínûleg idõtúllépéssel befejezõdik, mivel nem vagyunk fenn minden pillanatban a neten. A sendmail ekkor automatikusan a másodlagos MX rekord által megadott címre küldi a levelet, tehát a szolgáltatónkhoz (`_szolgáltató.net_`). Ez a másodlagos MX cím próbálja majd idõlegesen elérni a gépünket és kézbesíteni a leveleket az elsõdleges MX rekord által megadott gépre (`_cég.hu_`). A bejelentkezéskor ezért egy hasonló szkriptet kell lefuttatnunk: [.programlisting] .... #!/bin/sh # Tegyük a /usr/local/bin/pppmyisp állományba: ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp .... Ha készítünk egy külön bejelentkezõ szkriptet a felhasználók számára, akkor a `sendmail -qRcég.hu` parancsot is használhatjuk a fenti szkript helyett. Ezzel a `_cég.hu_` sorában található összes levél azonnal feldolgozásra kerül. A helyzetet így lehetne még jobban pontosítani: Az alábbi üzenet a {freebsd-isp} archívumából származik. [.programlisting] .... > we provide the secondary MX for a customer. The customer connects to > our services several times a day automatically to get the mails to > his primary MX (We do not call his site when a mail for his domains > arrived). Our sendmail sends the mailqueue every 30 minutes. At the > moment he has to stay 30 minutes online to be sure that all mail is > gone to the primary MX. > > Is there a command that would initiate sendmail to send all the mails > now? The user has not root-privileges on our machine of course. In the privacy flags section of sendmail.cf, there is a definition Opgoaway,restrictqrun Remove restrictqrun to allow non-root users to start the queue processing. You might also like to rearrange the MXs. We are the 1st MX for our customers like this, and we have defined: # If we are the best MX for a host, try directly instead of generating # local config error. OwTrue That way a remote site will deliver straight to you, without trying the customer connection. You then send to your customer. Only works for hosts, so you need to get your customer to name their mail machine customer.com as well as hostname.customer.com in the DNS. Just put an A record in the DNS for customer.com. .... Az idézet fordítása: [.programlisting] .... > Másodlagos MX rekordot biztosítunk az ügyfeleinknek. Az ügyfelek ezután automatikusan > csatlakoznak naponta akár többször is a szolgáltatásunkhoz és leszedik az elsõdleges MX > rekordhoz tartozó leveleket. (Nem szólunk neki, amikor a tartományához levél > érkezik.) A sendmail programunk minden 30 percben elküldi a sorban felhalmozódott > leveleket. Tehát jelen pillanatban legalább 30 percig fenn kell lennie az ügyfélnek, hogy > rendben megkapja az elsõdlegesre MX rekordra. > > Létezik valamilyen parancs a sendmail programhoz, amellyel azonnal lekérhetjük az összes > levelünket? A felhasználómnak természetesen nincsenek rendszergazdai jogosultságai az adott > gépen. A sendmail.cf privacy flags beállításai között van egy definíció, az Opgoaway,restrictqrun. Vegyük ki innen a restrictqrun beállítást, amivel a nem root felhasználók is megindíthatják a sor feldolgozását. Valószínûleg az MX-ek átrendezésére is szükség lesz. Mi vagyunk az elsõ MX az ilyen típusú ügyfelek számára, és ezt adtuk meg: # Ha mi vagyunk a legjobb MX a levél számára, akkor ne generáljunk # helyi beállítási hibát, hanem próbálkozzunk közvetlenül. OwTrue Ezzel már a távoli gép közvetlenül nekünk küld anélkül, hogy próbálkozna az ügyfél kapcsolatával. Ezt majd továbbküldjünk az ügyfélnek. Ez csak hálózati nevek esetében mûködik, tehát az ügyfelünknek el kell neveznie a leveleket fogadó gépét customer.com-nak, valamint a fel kell venni a hostname.customer.com címet is a DNS-be. Ehhez egyszerûen csak elegendõ egy A rekordot betenni a customer.com-hoz. .... === Miért kapok folyton Relaying Denied hibát, amikor más gépekrõl küldök levelet? A FreeBSD alapértelmezett telepítése során a sendmail úgy állítódik be, hogy csak arról a géprõl küldhetünk vele levelet, ahol fut. Például, ha POP szerver is elérhetõ, akkor a felhasználók meg tudják nézni a leveleiket az iskolából, munkából vagy bármilyen más távoli helyrõl, de leveleket onnan továbbra sem tudnak küldeni. Általában pár pillanattal a próbálkozás után a MAILER-DAEMON küldeni fog egy `5.7 Relaying Denied` (`5.7 A továbbítás nem engedélyezett`) üzenetet. Több lehetõségünk is van ennek megkerülésére. Az a legegyszerûbb módszer, ha az internet-szolgáltatónk címét felvesszük az [.filename]#/etc/mail/relay-domains# állományba. Például így: [source,shell] .... # echo "az.internet.szolgáltató.net" > /etc/mail/relay-domains .... Az állomány létrehozása vagy módosítása után újra kell indítanunk a sendmail programot. Ez remekül mûködik abban az esetben, ha rendszergazdák vagyunk és nem akarunk a helyi géprõl levelet küldeni, vagy egy másik gépen vagy akár másik internet-szolgáltatóval akarunk valamilyen kattingatós levelezõ programot használni. Olyankor is nagyon hasznos lehet, amikor csak egy vagy két e-mail hozzáférést állítottunk be. Ha egyszerre több címet is fel szeretnénk venni, akkor nyissuk meg ezt az állományt a kedvenc szövegszerkesztõnkkel és írjuk be a tartományokat, soronként egyet: [.programlisting] .... saját.internet.szolgáltató.net másik.internet.szolgáltató.com felhasználók-internet.szolgáltató.ja www.minta.org .... Innentõl kezdve a listában szereplõ bármelyik géprõl tudunk levelet küldeni (feltéve, hogy az adott felhasználó hozzáfér a gépünkhöz). Ezzel gyönyörûen megoldhatjuk, hogy a felhasználóink képesek legyenek távolról is levelet küldeni a rendszerünkön keresztül anélkül, hogy mások pedig szemetet küldenének át rajtunk. [[mail-advanced]] == Komolyabb témák A következõ szakaszban szóba kerülnek olyan komolyabb témák, mint például a levelek konfigurációja és a levelezés beállítása az egész tartomány számára. [[mail-config]] === Alapvetõ beállítások Alapból képesnek kell lennünk leveleket küldeni külsõ gépekre egészen addig, amíg az [.filename]#/etc/resolv.conf# állomány a megfelelõ beállításokat tartalmazza vagy egy saját névszervert futtatunk. Ha szeretnénk, hogy a gépünkre érkezõ levelek elérjék a FreeBSD-s gépünkön futó levéltovábbító ügynököt (például a sendmail programot), akkor erre két módszer kínálkozik: * Futtassunk saját névszervert és hozzunk létre magunknak egy tartományt. Például `FreeBSD.org`. * Közvetlenül a gépünkre küldessük a leveleket. Ezt úgy tehetjük meg, ha egybõl a gépünkhöz tartozó DNS névre küldetjük a leveleket. Például az `enyem.FreeBSD.org` címre. Függetlenül attól, hogy a fentiek közül melyik megoldást választjuk, a levelek csak akkor tudnak eljutni közvetlenül a gépünkre, ha állandó, statikus IP-címmel rendelkezünk (tehát nem dinamikus címmel, amit általában a betárcsázós PPP kapcsolatokhoz szoktak kiosztani). Ha tûzfal mögött vagyunk, akkor valamilyen módon felénk kell irányítani az SMTP forgalmat is. Ha közvetlenül a gépünkön akarjuk fogadni a leveleket, akkor a következõ kettõ közül az egyik mindenképpen kelleni fog: * Gondoskodjunk róla, hogy a hozzánk tartozó DNS-ben (legkisebb sorszámú) MX rekord a gépünk IP-címére mutat. * Gondoskodjunk róla, hogy a hozzánk tartozó DNS-ben nincs semmilyen MX rekord a gépünkhöz. A fentiek közül bármelyik elég ahhoz, hogy közvetlenül a gépünkre érkezzen meg a levél. Próbáljuk ki: [source,shell] .... # hostname enyem.FreeBSD.org # host enyem.FreeBSD.org enyem.FreeBSD.org has address 204.216.27.XX .... Ha ezt látjuk, akkor minden gond nélkül lehet küldeni levelet a mailto:nevem@enyem.FreeBSD.org[nevem@enyem.FreeBSD.org] a címre (feltételezve, hogy a sendmail megfelelõen mûködik az `enyem.FreeBSD.org` címen). Ha viszont ehhez hasonlót tapasztalunk: [source,shell] .... # host enyem.FreeBSD.org enyem.FreeBSD.org has address 204.216.27.XX enyem.FreeBSD.org mail is handled (pri=10) by kozpont.FreeBSD.org .... A gépünkre (`enyem.FreeBSD.org`) küldött összes levelet a `kozpont` szedi össze ugyanazon felhasználói névvel ahelyett, hogy közvetlenül a gépünkre küldeni ezeket. Az iménti adatokat a DNS szerver határozza meg. A levelek továbbításával kapcsolatos információkat az __MX__ mint __M__ail e__X__change DNS-rekord tárolja. Ha nincs ilyen MX rekord, akkor az IP-cím alapján közvetlenül az adott géphez kerül a levél. Például a `freefall.FreeBSD.org` MX rekordja hajdanán így nézett ki: [.programlisting] .... freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com .... Láthatjuk, hogy a `freefall` esetében több MX bejegyzés is szerepel. A legalacsonyabb MX-számú gép fogja kapni az erre a címre beérkezõ leveleket, amennyiben elérhetõ. Ha valamilyen okból nem érhetõ el, akkor helyette ideiglenesen a többiek (melyeket néha csak "tartalék MX-eknek" neveznek) veszik át a levelet és átadják a legalacsonyabb számúnak, amint az újra elérhetõvé válik. A tartalék jelleggel megadott MX gépek akkor érnek ténylegesen valamit, ha teljesen máshonnan csatlakoznak az internethez. Az internet szolgáltató vagy egy ismerõsünk gépe valószínûleg minden további nélkül segít ennek megoldásában. [[mail-domain]] === Egy egész tartomány leveleinek kezelése Egy levelezõ szerver beállításához valahogy meg kell tudnunk oldalni, hogy a különbözõ munkaállomásokra küldött levelek közvetlenül hozzá fussanak be. Alapvetõen tehát arról lenne szó, hogy a tartományunkon (ez ebben az esetben a `*.FreeBSD.org`) belüli gépekre címzett levelekre ez a gép "tart igényt" és így ezek ide irányítódnak át, majd a felhasználók errõl a központi levelezõ szerverrõl kapják meg a leveleiket. Az életünk megkönnyítéséhez minden felhasználónak létrehozzuk a saját _felhasználói nevét_ a levelezõ szerveren is. Ezt az man:adduser[8] paranccsal gyorsan el is végezhetjük. A levelezõ szerver lesz a hálózat összes munkaállomásához kirendelt levélváltó. Ezt a DNS beállításai között így adhatjuk meg: [.programlisting] .... enyem.FreeBSD.org A 204.216.27.XX ; Munkaállomás MX 10 kozpont.FreeBSD.org ; Levelezõ szerver .... Ezzel lényegében az A rekord figyelmen kívül hagyásával átirányítjuk a munkaállomások számára érkezõ összes levelet a levelezõ szerverre. A levelek tehát az MX rekord által mutatott címre mennek ki. Ezt önállóan nem tudjuk elvégezni, hacsak nem futattunk egy saját DNS szervert. Ha nincsen vagy nem is tudunk DNS szervert futtatni, akkor ebben a kérdésben egyeztessünk az internet-szolgáltatónkkal vagy bárkivel, aki a DNS beállításaiért felelõs. Ha virtuális e-mail címket is kezelünk, akkor a most következõ információ még a hasznunkra lehet. A példa kedvéért most feltesszük, hogy a tartományunkban van egy ügyfelünk, jelen esetben az `ugyfel1.org`, és azt akarjuk, hogy az `ugyfel1.org` címére küldött levelek a saját levelezõ szerverünkre kerüljenek át, a `level.sajat.com` címre. A DNS-t ehhez így kell beállítani: [.programlisting] .... ugyfel1.org MX 10 level.sajat.com .... Ha csak az `ugyfel1.org` levelezését akarjuk kezelni, akkor ahhoz _nem_ kell külön A rekord. [NOTE] ==== Vigyázzunk, mert az `ugyfel1.org` csak akkor pingelhetõ, ha létezik hozzá A rekord. ==== Befejezésül a levelezõ szerverünkön futó sendmail számára is fel kell tárnunk, hogy milyen tartományokhoz és/vagy hálózati nevekhez fogadjon leveleket. Ezt több módon is elvégezhetjük. A következõk bármelyik megfelel erre a célra: * A `FEATURE(use_cw_file)` használata esetén vegyük fel a címeket az [.filename]#/etc/mail/local-host-names# állományba. Ha a sendmail 8.10 elõtti változatai esetében ehhez az [.filename]#/etc/sendmail.cw# állományra lesz szükségünk. * Tegyük be a `Cwsajat.cimunk.com` sort az [.filename]#/etc/sendmail.cf# vagy a sendmail 8.10 és késõbbi változatai esetén az [.filename]#/etc/mail/sendmail.cf# állományba. [[SMTP-UUCP]] == SMTP és az UUCP A FreeBSD-hez tartozó sendmail olyan gépek számára lett kialakítva, amelyek közvetlenül az internethez csatlakoznak. Az UUCP használatával levelezõ rendszerek számára egy másik konfigurációs állományt kell telepíteni a sendmail számára. Az [.filename]#/etc/mail/sendmail.cf# állítása kézzel egyáltalán nem könnyû. A sendmail 8. változata ráadásul a konfigurációs állományokat az man:m4[1] elõfeldolgozó segítségével gyártja le, ahol a tényleges beállítások egy magasabb absztrakciós szinten jelennek meg. Az man:m4[1] típusú konfigurációs állományok a [.filename]#/usr/shared/sendmail/cf# könyvtárban találhatóak. A [.filename]#cf# alkönyvtárban levõ [.filename]#README# állomány igyekszik a felhasználót bevezetni az man:m4[1] alapú beállítások világába. A `mailertable` nevû lehetõség használatával tudjuk a legjobban támogatni az UUCP protokollon keresztüli kézbesítést. Ezzel felépül egy olyan adatbázis, amelyet a sendmail fel tud használni a továbbítást érintõ döntésekben. Ehhez elsõként hozzuk is létre a saját [.filename]#.mc# állományunkat. Ehhez a [.filename]#/usr/shared/sendmail/cf/cf# könyvtár tartalmaz néhány példát. Hívjuk most ezt az állomnyunkat [.filename]#ize.mc# néven. A következõ módszerrel tudjuk egy valós [.filename]#sendmail.cf# állománnyá alakítani: [source,shell] .... # cd /etc/mail # make ize.cf # cp ize.cf /etc/mail/sendmail.cf .... Egy átlagos [.filename]#.mc# állomány egyébként valahogy így épül fel: [.programlisting] .... VERSIONID(`verziószám') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', sajat.uucp.relay) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw sajat.al.nev Cw azuucpgepneve.UUCP .... Az `accept_unresolvable_domains`, `nocanonify` és `confDONT_PROBE_INTERFACES` lehetõségekre hivatkozó sorok megakadályozzák, hogy a levél kézbesítésében a DNS is szerepet játsszon. Az `UUCP_RELAY` az UUCP alapú kézbesítés támogatását engedélyezi. Egyszerûen csak írjunk ide egy internetes hálózati nevet, amely képes feldolgozni az .UUCP áltartomány címeit. Az esetek többségében ide az internet-szolgáltatónk levelek továbbküldéséért felelõs gépe kerül. Miután ezzel végeztünk, szükségünk lesz még az [.filename]#/etc/mail/mailertable# állományra is. Ha a külvilág felé csak egyetlen összeköttetést használunk a levelekhez, akkor az alábbi pontosan megfelel: [.programlisting] .... # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:sajat.uucp.relay .... Egy bonyolultabb példa pedig így néz ki: [.programlisting] .... # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: .... Az elsõ három sor azokat a speciális eseteket kezeli, ahol a tartomány felé küldött levelek nem az alapértelmezett úton visszük tovább, hanem valamelyik UUCP szomszéd felé és így "le tudjuk rövidíteni" a kézbesítés útvonalát. Az ezeket követõ sor dolgozza fel a helyi Ethernet tartomány felé STMP protokollal továbbítható leveleket. Végül az UUCP szomszédokat is felsoroljuk az .UUCP áltartomány jelölése szerint, így megengedjük, hogy a `uucp-szomszéd! címzett` felülbírálja az alapértelmezett szabályokat. Az utolsó sorban mindig egyetlen pont szerepel, ami minden másra illeszkedik, így az UUCP kézbesítés egy olyan UUCP szomszéd felé halad, amely a világ felé egy univerzális levelezõ átjárónak tekinthetõ. A `uucp-dom:` kulcsszó mögött szereplõ összes csomópont nevének érvényes UUCP szomszédra kell utalnia, amelyet a `uuname` paranccsal le is tudunk ellenõrizni. A feladatból már csak annyi maradt hátra, hogy használat elõtt ezt az állományt át kell alakítani DBM adatbázis formátumba. Az ehhez szükséges parancsot érdemes [.filename]#mailertable# állomány elejére bejegyzésben felírni. A [.filename]#mailertable# megváltoztatásakor mindig le kell futtatni ezt a parancsot. Utolsó jótanács: ha nem lennénk biztosak valamelyik kézbesítési útvonal mûködésében, ne felejtsük el a sendmail `-bt` beállítását. Ezzel a sendmail az ún. _címtesztelõ módban_ (address test mode) indul el. Gépeljük be, hogy `3,0`, majd írjuk be a tesztelni kívánt címet. Az utolsó sorban láthatjuk a felhasznált belsõ levéltovábbító ügynököt, a célgépet, amellyel ezt meghívjuk, és a (valószínûleg az átfordított) címet. Innen a kbd:[Ctrl+D] billentyûkombinációval léphetünk ki. [source,shell] .... % sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter
> 3,0 ize@pelda.com canonify input: ize @ pelda . com ... parse returns: $# uucp-dom $@ sajat.uucp.relay $: ize < @ pelda . com . > > ^D .... [[outgoing-only]] == Csak küldés beállítása Gyakran elõfordulhat, hogy csak leveleket akarunk továbbküldeni. Mint például: * Asztali számítógépünk van, de használni akarunk olyan programokat, mint például a man:send-pr[1]. Ehhez az internet-szolgáltatón keresztül kell továbbküldeni a levelet. * A számítógépünk egy olyan szerver, amely nem helyben kezeli a leveleket, ezért az összeset átküldi feldolgozásra. Szinte bármelyik levélküldõ ügynök képes betölteni ezt az ûrt. Sajnos eléggé bonyolult helyesen beállítani úgy egy bármire képes levélküldõt, hogy egyszerûen csak szabaduljon meg a levelektõl. Ilyenkor a sendmail vagy a postfix használatával tulajdonképpen ágyúval lövünk verébre. Továbbá, ha egy átlagos internet-hozzáféréssel rendelkezünk, adódhat, hogy a szerzõdés egyszerûen tiltja a "levelezõ szerver" futtatását. Legegyszerûbben úgy tudjuk kielégíteni az ilyen jellegû igényeket, ha feltelepítjük a package:mail/ssmtp[] portot. A `root` felhasználóval adjuk ki a következõ parancsokat: [source,shell] .... # cd /usr/ports/mail/ssmtp # make install replace clean .... Telepítése után a package:mail/ssmtp[] portot a mindössze négysoros [.filename]#/usr/local/etc/ssmtp/ssmtp.conf# állománnyal állíthatjuk be: [.programlisting] .... root=valodiemail@minta.com mailhub=level.minta.com rewriteDomain=minta.com hostname=_GEPNEV_ .... A `root` felhasználó számára feltétlenül egy valódi e-mail címet adjuk meg. A `level.minta.com` helyére az internet-szolgáltatónk kimenõ leveleket továbbító szerverét adjuk meg (bizonyos szolgáltatók ezt "kimenõ levelezõ szervernek" vagy "SMTP szervernek" nevezik). Ne felejtsük el sendmail démont sem letiltani, beleértve a kimenõ levelek kezelését. Ennek részleteit lásd a <>ban. A package:mail/ssmtp[] használatánál még adhatunk meg további beállításokat is. A [.filename]#/usr/local/etc/ssmtp# állományban vagy az ssmtp man oldalán találhatunk példákat és olvashatunk bõvebben a témáról. Az ssmtp ilyen fajta beállításával a számítógépünkön levõ szoftverek is helyesen fognak mûködni, miközben nem sértjük meg az internet-szolgáltató elõírásait és nem tesszük lehetõvé, hogy a számítógépünkrõl levélszemetet küldhessenek. [[SMTP-dialup]] == Levelezés betárcsázós kapcsolattal Ha statikus IP-címünk van, akkor az alapértelmezett beállítások tökéletesen megfelelõek számunkra. Csupán a gépünkhöz tartozó internetes címet kell megadnunk a gépünk nevének és a sendmail elvégzi a többit. Ha viszont dinamikusan kiosztott IP-címmel rendelkezünk és betárcsázós PPP kapcsolaton keresztül csatlakozunk az internethez, akkor valószínûleg az internet-szolgáltató levelezõ szerverén van egy postaládánk. Most tegyük fel, hogy a internet-szolgáltató tartománya a `szolgaltato.net` és a felhasználói név a `felhasznalo`, a gépünk neve pedig `otthoni.bsdm`, valamint az internet-szolgáltató részérõl levelezésre a `relay.szolgaltato.net` gépet használhatjuk. A postaládánkból úgy tudjuk letölteni a leveleket, ha telepítünk hozzá egy programot. Erre a feladatra a fetchmail hibátlanul alkalmas, mivel több különbözõ protokollt ismer. Ez a program csomagként vagy a Portgyûjteménybõl (package:mail/fetchmail[]) is elérhetõ. Az internet-szolgáltatók erre általában a POP protokollt ajánlják fel. Ha a felhasználói PPP alkalmazást használjuk, állítsuk be az [.filename]#/etc/ppp/ppp.linkup# állományt a következõ módon és így a csatlakozáskor maguktól letöltõdnek a leveleink: [.programlisting] .... MYADDR: !bg su felhasznalo -c fetchmail .... Ha a sendmail segítségével küldjük tovább a leveleket a nem helyi hozzáférések felé (ahogy azt lentebb is láthatjuk), akkor minden bizonnyal a csatlakozáskor arra is szükségünk lesz, hogy a leveleket tároló sor is feldolgozódjon. Ezt úgy oldhatjuk meg, ha az [.filename]#/etc/ppp/ppp.linkup# állományba a `fetchmail` parancs után a következõt tesszük: [.programlisting] .... !bg su felhasznalo -c "sendmail -q" .... Ez a példa feltételezi, hogy az `otthoni.bsdm` gépen van egy `felhasznalo` nevû felhasználónk. Az `otthoni.bsdm` gépen a `felhasznalo` felhasználói könyvtárában hozzunk létre egy [.filename]#.fetchmailrc# állományt: [.programlisting] .... poll szolgaltato.net protocol pop3 fetchall pass TitkosJelszo .... Ezt az állományt csak és kizárólag a `felhasznalo` olvashatja, mivel szerepel benne a hozzá tartozó `TitkosJelszo`. Úgy tudunk a megfelelõ `from:` fejléccel küldeni, ha felvilágosítjuk a sendmail programot, hogy ne az mailto:felhasznalo@otthoni.bsdm[felhasznalo@otthoni.bsdm] címet, hanem a mailto:felhasznalo@szolgaltato.net[felhasznalo@szolgaltato.net] címet használja. Sõt, a gyorsítás kedvéért a sendmail számára érdemes elárulni, hogy a `relay.szolgaltato.net` címen keresztül küldjön. A munka elvégzéséhez elegendõ az alábbi [.filename]#.mc# állomány: [.programlisting] .... VERSIONID(`otthoni.bsdm.mc 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwotthoni.bsdm MASQUERADE_AS(`szolgaltato.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.szolgaltato.net') Dmotthoni.bsdm define(`confDOMAIN_NAME',`otthoni.bsdm')dnl define(`confDELIVERY_MODE',`deferred')dnl .... Az elõzõ szakaszban találhatjuk meg annak a módját, hogy miként varázsoljunk ebbõl az [.filename]#.mc# állományból egy [.filename]#sendmail.cf# állományt. A [.filename]#sendmail.cf# frissítése után pedig ne felejtsük el a sendmail újraindítását! [[SMTP-Auth]] == Az SMTP hitelesítése Levelezõ szerverünkön az SMTP protokoll hitelesítésének (SMTP Authentication) engedélyezése több szempontból is elõnyökkel bír. Az SMTP hitelesítésének bekapcsolása egy újabb réteget képez a sendmail védelmében, és az olyan állandóan mozgásban levõ felhasználók számára is megoldást nyújt, akik anélkül képesek használni ugyanazt a levelezõ szervert, hogy minden alkalommal újrakonfigurálnák a levelezõ kliensüket. [.procedure] ==== . Telepítsük fel a package:security/cyrus-sasl2[] portot. A package:security/cyrus-sasl2[] port több fordítási idejû beállítást támogat. Itt most az SMTP hitelesítését fogjuk használni, ezért gondoskodjunk a `LOGIN` opció engedélyezésérõl. . A package:security/cyrus-sasl2[] telepítés után nyissuk meg szerkesztésre a [.filename]#/usr/local/lib/sasl2/Sendmail.conf# állományt (vagy ha még nem létezne, hozzuk létre), és benne vegyük fel a következõ sort: + [.programlisting] .... pwcheck_method: saslauthd .... + . Ezt követõen telepítsük a package:security/cyrus-sasl2-saslauthd[] portot, és tegyük bele az [.filename]#/etc/rc.conf# állományba ezt a sort: + [.programlisting] .... saslauthd_enable="YES" .... + Végezetül indítsuk el a saslauthd démont: + [source,shell] .... # /usr/local/etc/rc.d/saslauthd start .... + Ez a démon fog közvetíteni a sendmail és a FreeBSD [.filename]#passwd# adatbázisa közti hitelesítésben. Ezzel elkerülhetjük az új felhasználói nevek és jelszavak felvételét az SMTP hitelesítés használatához, így a hozzáférések és a levelezés jelszava ugyanaz marad. . Most pedig írjuk hozzá az alábbi sorokat az [.filename]#/etc/make.conf# állományhoz: + [.programlisting] .... SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl2 .... + Ezek a sorok állítják be a sendmail számára, hogy fordítás közben a package:cyrus-sasl2[] függvényeit használja. A sendmail újrafordítása elõtt mindenképpen legyen fenn a package:cyrus-sasl2[] port. . A sendmail újrafordítását a következõ parancsok végrehajtásával intézhetjük el: + [source,shell] .... # cd /usr/src/lib/libsmutil # make cleandir && make obj && make # cd /usr/src/lib/libsm # make cleandir && make obj && make # cd /usr/src/usr.sbin/sendmail # make cleandir && make obj && make && make install .... + A sendmail fordítása esetén semmilyen problémának nem szabadna elõfordulnia, kivéve ha a [.filename]#/usr/src# könyvtárat és a szükséges osztott könyvtárakat nem változtatjuk idõközben túlságosan gyakran. . A sendmail lefordítása és újratelepítése után szerkesszük át az [.filename]#/etc/mail/freebsd.mc# állományt (vagy azt az [.filename]#.mc# állományt, amelyet éppen használunk). Sok rendszergazda a man:hostname[1] parancs válaszát használja fel az [.filename]#.mc# típusú állományok egyedi elnevezéséhez). Írjuk bele a következõ sorokat: + [.programlisting] .... dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl .... + Ezek állítják be a sendmail számára a felhasználók hitelesítésére alkalmas különbözõ módszereket. Ha a pwcheck módszer helyett valami mást akarunk használni, akkor járjunk utána a dokumentációban. . Zárásul futassuk le a man:make[1] parancsot az [.filename]#/etc/mail# könyvtárban. Így lefut az új [.filename]#.mc# állományunk és létrejön egy [.filename]#freebsd.cf# (vagy amilyen nevet az [.filename]#.mc# állománynak megadtunk) [.filename]#.cf# állomány. Ezután a `make install restart` parancs kiadásával másoltassuk át ezt a [.filename]#sendmail.cf# helyére és szabályosan indítassuk újra a sendmail szolgáltatást. A folyamatról részletesebb tájékoztatást az [.filename]#/etc/mail/Makefile# állomány tud nyújtani. ==== Ha eddig minden a legnagyobb rendben történt, akkor most már képesek vagyunk bejelentkezési információt is átadni a levelezõ kliensnek és elküldeni egy tesztüzenetet. A hibák kiszûréséhez állítsuk a sendmail `LogLevel` opcióját az 13 értékre és figyeljük a [.filename]#/var/log/maillog# állományt. További felvilágosításért olvassuk el a sendmail http://www.sendmail.org/\~ca/email/auth.html[SMTP hitelesítéssel] foglalkozó oldalát (angolul). [[mail-agents]] == Levelezõ kliensek A levelezõ kliens (Mail User Agent, MUA) egy olyan alkalmazás, amelyik elektronikus levelek küldésére és fogadására használható. Azonkívül, ahogy az e-mail "fejlõdik" és egyre bonyolultabbá válik, a levelezõ kliensek is egyre inkább erõsebbé válnak abban a tekintetben, ahogy az e-maileket kezelik. Ezzel együtt a felhasználók is egyre több lehetõséget és rugalmasságot kapnak. A FreeBSD számos levelezõ klienst támogat, mindegyikük könnyedén telepíthetõ a crossref:ports[ports,FreeBSD Portgyûjteménye] segítségével. A felhasználók választhatnak a grafikus kliensek, mint például az evolution vagy a balsa és a konzolos kliensek, például a mutt, pine vagy `mail` között, esetleg használhatják a nagyobb szervezetek részérõl felkínált webes felületeket is. [[mail-command]] === mail A man:mail[1] a FreeBSD alapértelmezett levelezõ kliense. Egy olyan konzolos alkalmazás, amelyben elérhetjük az e-mailek küldéséhez és fogadásához szükséges összes alapvetõ funkciót, habár a csatolmányokat csak korlátozottan képes kezelni és csak a helyi postaládákat kezeli. Annak ellenére, hogy a `mail` önmaga nem képes kommunikálni POP vagy IMAP szerverekkel, az ilyen postaládák tartalmát egy fetchmail-szerû alkalmazással (lásd <>) le tudjuk tölteni a számára is elérhetõ helyi [.filename]#mbox# állományba. A levelek küldéséhez és fogadásához egyszerûen hívjuk be a `mail` programot a következõ módon: [source,shell] .... % mail .... Ezután a [.filename]#/var/mail# könyvtárban található felhasználói postaládánk tartalmát automatikusan beolvassa a `mail` segédprogram. Ha a postaláda üres, akkor a program egybõl befejezi futását és közli, hogy nem talált levelet. Amikor viszont tudott beolvasni leveleket, megjelenik egy felület, ahol a beérkezett üzenetek listáját láthatjuk. Az üzenetek automatikusan sorszámozódnak, ahogy ezt az alábbi példa is szemlélteti: [source,shell] .... Mail version 8.1 6/6/93. Type ? for help. "/var/mail/marcs": 3 messages 3 new >N 1 root@localhost Mon Mar 8 14:05 14/510 "proba" N 2 root@localhost Mon Mar 8 14:05 14/509 "felhasznaloi hozzaferes" N 3 root@localhost Mon Mar 8 14:05 14/509 "minta" .... Az üzenetek olvasásának a kbd:[t] paranccsal kezdhetünk neki, amelyet az elolvasandó üzenet sorszáma követ. Ebben a példában az elsõ e-mailt nyitjuk meg: [source,shell] .... & t 1 Message 1: From root@localhost Mon Mar 8 14:05:52 2004 X-Original-To: marcs@localhost Delivered-To: marcs@localhost To: marcs@localhost Subject: proba Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST) From: root@localhost (Charlie Root) Ezt az uzenetet probabol kuldom, valaszolj ra, ha megkaptad. .... Ahogy az a fenti példából is látszik, a kbd:[t] billentyû hatására az üzenet a teljes fejlécével együtt jelenik meg. Az üzenetek listáját a kbd:[h] billentyûvel hozhatjuk vissza. Ha egy levélre válaszolni szeretnénk, akkor ezt a `mail` paranccsal is megtehetjük, vagy az kbd:[R] vagy az kbd:[r] parancsokkal. Az kbd:[R] arra utasítja a `mail` programot, hogy csak az üzenet küldõjének válaszoljon, míg az kbd:[r] hatására nem csupán a küldõ, hanem az üzenet összes címzettje megkapja a válaszunkat. A parancshoz hozzátûzhetjük egy levél sorszámát is, ekkor az adott levélre fogunk válaszolni. Miután kiadtuk a parancsot, írjuk meg a válaszunkat és új sorban kezdve zárjuk le az üzenetet egyetlen kbd:[.] beírásával. Valahogy így: [source,shell] .... & R 1 To: root@localhost Subject: Re: proba Koszonom, megkaptam a leveledet. . EOT .... Új levelet az kbd:[m] segítségével tudunk küldeni, ami után meg kell adnunk a címzettet. Egyszerre több címzettet is meg tudunk adni, ha a címzett helyén címeiket egy kbd:[,] karakterrel elválasztva soroljuk fel. Ezután a levél témája is megadható, amit végül a levél szövege követ. Az üzenetet egy új sorban megadott egyetlen kbd:[.] segítségével zárhatjuk le. [source,shell] .... & mail root@localhost Subject: Elsajatitottam a mail hasznalatat Most mar en is tudok levelet irni es fogadni a mail hasznalataval... :) . EOT .... Amikor a `mail` segédprogramban vagyunk, a kbd:[?] használatával bármikor segítséget kérhetünk, valamint a `mail` mûködésével kapcsolatban a man:mail[1] man oldalát érdemes felkeresni. [NOTE] ==== Ahogy azt már korábban is említettük, a man:mail[1] parancsot eredetileg nem készítették fel az csatolt állományok kezelésére, ezért igen gyengén bánik velük. Az újabb levelezõ kliensek, mint például a mutt, a csatolt állományokat sokkal intelligensebb módon kezelik. Ha viszont ragaszkodunk a `mail` használatához, akkor a package:converters/mpack[] port használatát érdemes megfontolnunk. ==== [[mutt-command]] === mutt A mutt apró mérete ellenére egy igen komoly levelezõ kliens és remek lehetõségeket ajánl fel. Íme ízelítésképpen közülük néhány: * Képes az üzeneteket szálakba rendezni * Az e-mailek titkosítására és elektronikus aláírására támogatja a PGP használatát * MIME támogatás * Maildir támogatás * Nagyfokú testreszabhatóság Ezen lehetõségei révén a mutt ez egyik legfejlettebb levelezõ kliens. A mutt részletesebb bemutatását a http://www.mutt.org[http://www.mutt.org] címen találjuk (angolul). A mutt stabil változata a package:mail/mutt[] port használatával telepíthetõ fel, miközben a fejlesztés alatt levõ változatot a package:mail/mutt-devel[] port telepíti. Miután a portot sikerült felraknunk, a mutt az alábbi parancs begépelésével indítható el: [source,shell] .... % mutt .... A mutt indulása után automatikusan beolvassa a [.filename]#/var/mail# könyvtárban megtalálható felhasználói postaládát és ha lehetséges, akkor megjeleníti a tartalmát. Ha nincsen levél a felhasználó postaládájában, akkor a mutt a felhasználó parancsaira vár. Ezen a képen a mutt üzenetlistája látható: image::mutt1.png[] A levelek elolvasásához egyszerûen csak válasszuk ki a kurzorral és nyomjuk meg az kbd:[Enter] billentyût. Ezután a mutt így mutatja a levelet: image::mutt2.png[] Ahogy azt már a man:mail[1] parancsnál is megszokhattuk, a mutt is lehetõvé teszi, hogy vagy csak a küldõnek, vagy pedig rajta kívül még az összes címzettnek is válaszoljunk. A levél küldõjének az kbd:[r] lenyomásával tudunk válaszolni. A csoportos válaszadáshoz pedig, ahol tehát a küldõn kívül a címzettek is megkapják a levelünket, a kbd:[g] billentyût kell használni. [NOTE] ==== A mutt az e-mailek létrehozásához és megválaszolásához a man:vi[1] szövegszerkesztõt használja. Ezt úgy tudjuk átállítani, ha a könyvtárunkban található [.filename]#.muttrc# állományban átírjuk az `editor` változót, vagy értéket adunk az `EDITOR` környezeti változónak. A mutt beállításáról többet a http://www.mutt.org[http://www.mutt.org] címen tudhatunk meg. ==== Egy új levél megírásához nyomjuk le az kbd:[m] gombot. Miután elláttuk érvényes témával a levelet, a mutt elindítja a man:vi[1] szövegszerkesztõt és nekiláthatunk a levél szövegének. Amint befejeztük, mentsük el és lépjünk ki a `vi` szerkesztõbõl. Ezután visszakapjuk a mutt felületét, ahol a küldendõ e-mail összefoglalását láthatjuk. A levelet végül az kbd:[y] lenyomásával küldhetjük el. Erre a következõ képen láthatunk egy példát: image::mutt3.png[] A mutt ezenkívül még rengeteg segítséget is tartalmaz, amelyet a legtöbb menübõl a kbd:[?] gomb lenyomásával érhetünk el. A felsõ sorban mindig láthatjuk a kiadható parancsok rövid összefoglalását. [[pine-command]] === pine A pine alapvetõen a kezdõ felhasználók számára íródott, de számos komolyabb lehetõséget is támogat. [WARNING] ==== A pine szoftverrel kapcsolatban a múltban már rengeteg távolról kihasználható sebezhetõség látott napvilágot, és ennek köszönhetõen a támadók megfelelõen elõkészített e-mailek segítségével tetszõleges kódot tudnak futtatni a rendszeren levõ helyi felhasználókon keresztül. Noha az összes ilyen _ismert_ hibát javították, de a FreeBSD biztonsági tisztje szerint a pine kódját biztonság szempontjából annyira hanyag módon írták, hogy további, eddig még felfedezetlen sebezhetõségeket is magában rejt. Ennek megfelelõen tehát a pine használata mindenkinek csak saját felelõsségre javasolt. ==== A pine jelenlegi verziója a package:mail/pine4[] porton keresztül telepíthetõ. A telepítés lezajlása után a pine a következõ paranccsal indítható: [source,shell] .... % pine .... A pine elsõ futtatása során egy üdvözlõ üzenetet és egy rövid bemutatkozást jelenít meg, valamint a pine fejlesztõi arra kérik a felhasználókat, hogy küldjenek nekik egy névtelen üzenetet, amibõl le tudják szûrni mennyien használják a kliensüket. A névtelen üzenet elküldéséhez a kbd:[Enter] lenyomásával járulhatunk hozzá vagy az kbd:[E] használatával enélkül tudunk kilépni a képernyõrõl. Ezt az üdvözlõ képernyõt itt láthatjuk: image::pine1.png[] A felhasználó ezután a fõmenübe kerül, ahol a kurzorbillentyûkkel minden gond nélkül tudunk mozogni. Ebben a fõmenüben a levelek megírására, a leveleket tároló könyvtárak tallózására vagy éppen a címjegyzék karbantartására gyorsbillentyûket is használhatuk. A fõmenü alatt szerepel az adott menüben végrehajtható feladatokhoz tartozó gyorsbillentyûk rövid felsorolása. A pine alapértelmezés szerint az [.filename]#inbox# könyvtárat nyitja meg. A bennelévõ üzenetek listájának megtekintéséhez nyomjuk a kbd:[I] gombot vagy válasszuk ki a lentihez hasonló módon a [.guimenuitem]#MESSAGE INDEX# menüpontot: image::pine2.png[] Az üzenetek listájában az adott könyvtárban található üzenetek láthatjuk, és köztük a kurzorbillentyûkkel mozoghatunk. A kiemelt üzenet az kbd:[Enter] lenyomásával olvasható el. image::pine3.png[] A lenti képen egy ilyen példa üzenetet láthatunk a pine programban. A rendelkezésünkre álló gyorsbillentyûk ilyenkor is a képernyõ alján megjelennek referenciaként. Ilyen gyorsbillentyû többek közt az kbd:[r] gomb, amelynek hatására a klienssel megválaszolhatjuk a éppen látható üzenetet. image::pine4.png[] A pine kliensen belül a pico szövegszerkesztõ segítségével tudunk megválaszolni egy e-mailt, amely alapból a pine mellé települ. A pico megkönnyíti a navigációt az üzenetekben és sokkal elnézõbb a kezdõ felhasználókkal, mint például a man:vi[1] vagy a man:mail[1]. Ha befejeztük a választ, az üzenetet a kbd:[Ctrl+X] billentyûkombinációval tudjuk elküldeni. A pine erre megerõsítést fog kérni. image::pine5.png[] A pine alkalmazás a fõmenübõl elérhetõ [.guimenuitem]#SETUP# menüpont meghívásával szabható testre. A további részleteket a http://www.washington.edu/pine[http://www.washington.edu/pine] oldalon találhatjuk (angolul). [[mail-fetchmail]] == A fetchmail használata A fetchmail egy mindentudó IMAP és POP kliens, amely lehetõvé teszi a felhasználók számára, hogy automatikusan töltsenek le leveleket távoli IMAP és POP szerverekrõl és lementsék azokat a helyi postaládáikba. Így a levelek sokkal könnyebben elérhetõek. A fetchmail a package:mail/fetchmail[] port segítségével telepíthetõ, és számos lehetõséget ajánl fel, többek közt: * A POP3, APOP, KPOP, IMAP, ETRN és az ODMR protokollok ismerete. * Képes SMTP használatával levelet továbbítani, és ennek révén a szûrés, továbbküldés és az álnevek használata a megszokott módon mûködik. * Démonként futtatva képes adott idõközönként ellenõrizni a frissen érkezõ üzeneteket. * Képes egyszerre több postaládát is kezelni, majd ezek tartalmát a beállításainak megfelelõen továbbküldeni a különbözõ helyi felhasználóknak. Noha a fetchmail összes lehetõségének aprólékos bemutatása meghaladná ennek a leírásnak a kereteit, azért szót kerítünk néhány alapvetõ funkciójára. A fetchmail segédprogramnak a megfelelõ mûködéshez egy [.filename]#.fetchmailrc# nevû konfigurációs állományra van szüksége. Ez az állomány tárolja a szerverekre vonatkozó, valamint a bejelentkezéshez szükséges információkat. Az állomány kényes tartalmára tekintettel azt javasoljuk, hogy csak a tulajdonosának engedélyezzük az olvasását: [source,shell] .... % chmod 600 .fetchmailrc .... Az alább ismertetésre kerülõ [.filename]#.fetchmailrc# állományban azt láthatjuk, ahogy egyetlen felhasználó postaládáját érjük el a POP protokoll használatával. Arra utasítja a fetchmail programot, hogy csatlakozzon a `levelezes.com` címre a `joska` felhasználóval és az `XXX` jelszóval. Ebben a példában feltételezzük, hogy a `joska` nevû felhasználó létezik a rendszerünkben is. [.programlisting] .... poll levelezes.com protocol pop3 username "joska" password "XXX" .... A következõ példában több POP és IMAP szerverhez csatlakozunk és ahol lehet, több helyi felhasználónak irányítjuk át a leveleket: [.programlisting] .... poll levelezes.com proto pop3: user "joska", with password "XXX", is "jozsi" here; user "andrea", with password "XXXX"; poll levelezes2.net proto imap: user "jani", with password "XXXXX", is "hardstuff" here; .... A fetchmail program a `-d` beállítás megadásával démonként is elindítható, amely után meg kell adni (másodpercekben) azt az idõközt, aminek elteltével a fetchmail lekérdi a [.filename]#.fetchmailrc# állományban felsorolt szervereket. Az alábbi példában a fetchmail 600 másodpercenként kéri el a leveleket: [source,shell] .... % fetchmail -d 600 .... A fetchmail további lehetõségeirõl és mûködésérõl a http://fetchmail.berlios.de/[http://fetchmail.berlios.de/] oldalon olvashatunk (angolul). [[mail-procmail]] == A procmail használata A procmail segédprogram egy hihetetlenül erõs alkalmazás, mellyel a beérkezõ leveleinket tudjuk szûrni. A felhasználók számára olyan "szabályok" megadását teszi lehetõvé, amelyekre aztán a rendszer illeszti a bejövõ leveleket, és az eredménynek megfelelõen elvégez bizonyos feladatokat vagy átirányítja a levelet más postaladákba és/vagy e-mail címekre. A procmail a package:mail/procmail[] porttal telepíthetõ fel. Miután ez sikerült, akár közvetlenül be is építhetjük a legtöbb levelezõ kliensbe. Errõl az adott levelezõ kliens dokumentációjában olvashatunk többet. A procmail úgy is integrálható, ha a felvesszük a következõ sort a procmail szolgáltatára igényt tartó felhasználó könyvtárában található [.filename]#.forward# állományba: [.programlisting] .... "|exec /usr/local/bin/procmail || exit 75" .... A következõ szakaszban láthatjuk a procmail néhány alapvetõ szabályát, valamint ezek rövid leírását. Ezeket a szabályokat a [.filename]#.procmailrc# állományba kell beleírni, amely szintén a felhasználó könyvtárában leledzik. Ezen szabályok többsége a man:procmailex[5] man oldalon is olvasható. A mailto:felhasznalo@levelezes.com[felhasznalo@levelezes.com] címrõl érkezõ leveleket irányítsuk át a mailto:jocim@levelezes2.com[jocim@levelezes2.com] külsõ címre: [.programlisting] .... :0 * ^From.*felhasznalo@levelezes.com ! jocim@levelezes2.com .... Minden 1000 byte-nál kisebb levelet küldjünk át a mailto:jocim@levelezes2.com[jocim@levelezes2.com] külsõ címre: [.programlisting] .... :0 * < 1000 ! jocim@levelezes2.com .... Küldjük át az összes mailto:masik@levelezes.com[masik@levelezes.com] címre küldött levelet a [.filename]#masik# postaládába: [.programlisting] .... :0 * ^TOmasik@levelezes.com masik .... Küldjük az összes olyan levelet a [.filename]#/dev/null# eszközre, amelyek a témájában szerepel a "Spam" szó: [.programlisting] .... :0 ^Subject:.*Spam /dev/null .... Egy hasznos szabály, amellyel el tudjuk kapni a `FreeBSD.org` levelezési listáiról érkezõ leveleket és el tudjuk raktározni ezeket a saját postaládájukba: [.programlisting] .... :0 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG { LISTNAME=${MATCH} :0 * LISTNAME??^\/[^@]+ FreeBSD-${MATCH} } .... diff --git a/documentation/content/it/books/handbook/mail/_index.adoc b/documentation/content/it/books/handbook/mail/_index.adoc index f3561cb486..6c8069aad4 100644 --- a/documentation/content/it/books/handbook/mail/_index.adoc +++ b/documentation/content/it/books/handbook/mail/_index.adoc @@ -1,1185 +1,1185 @@ --- title: Capitolo 26. Posta Elettronica part: Parte IV. Comunicazione di Rete prev: books/handbook/ppp-and-slip next: books/handbook/network-servers showBookMenu: true weight: 31 path: "/books/handbook/" --- [[mail]] = Posta Elettronica :doctype: book :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: 26 :partnums: :source-highlighter: rouge :experimental: :images-path: books/handbook/mail/ ifdef::env-beastie[] ifdef::backend-html5[] :imagesdir: ../../../../images/{images-path} endif::[] ifndef::book[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] toc::[] endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] toc::[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [[mail-synopsis]] == Sinossi La "Posta Elettronica", meglio conosciuta come email, è una delle forme di comunicazione maggiormente utilizzate tutt'oggi. Questo capitolo fornisce un'introduzione di base per eseguire un server di posta su FreeBSD, come pure un'introduzione per inviare e ricevere la posta elettronica usando FreeBSD comunque, questo non è un riferimento completo e infatti molte considerazioni importanti sono omesse. Per coprire questo argomento in modo più completo, si rimanda il lettore alla moltitudine di eccellenti libri elencati nell'crossref:bibliography[bibliography,Bibliografia]. Dopo aver letto questo capitolo, saprai: * Quali componenti software vengono coinvolti nell'invio e nella ricezione della posta elettronica. * Dove sono collocati in FreeBSD i file di configurazione fondamentali di sendmail. * Le differenze tra casella di posta remota e locale. * Come impedire agli spammer di usare illegalmente il tuo server di posta come un relay. * Come installare e configurare un mail transfer agent alternativo sul tuo sistema, sostituendo sendmail. * Come risolvere i problemi più frequenti legati al server di posta. * Come usare SMTP con UCCP. * Come configurare il sistema solo per inviare la posta. * Come usare la posta con una connessione dialup. * Come configurare l'Autenticazione SMTP per aumentare la sicurezza. * Come installare e usare un Mail User Agent (MUA), come mutt per inviare e ricevere la posta. * Come scaricare la tua posta da un server remoto POP o IMAP. * Come applicare in modo automatico filtri e regole sulla posta in entrata. Prima di leggere questo capitolo, dovresti: * Aver configurato correttamente la tua connessione di rete (crossref:advanced-networking[advanced-networking,Networking Avanzato]). * Aver configurato correttamente le informazioni DNS relative alla tua macchina server di posta (crossref:network-servers[network-servers,Servizi di Rete]). * Sapere come installare software aggiuntivo di terze parti (crossref:ports[ports,Installazione delle Applicazioni. Port e Package]). [[mail-using]] == Utilizzo della Posta Elettronica Ci sono cinque parti principali impegnate in uno scambio di email. Queste sono: <>, <>, <>, <>, e naturalmente <>. [[mail-mua]] === Il Programma Client Questo include programmi a riga di comando quali mutt, pine, elm, e mail, e programmi con un'interfaccia grafica (GUI) quali balsa, xfmail per citarne alcuni, e qualcosa di più "raffinato" simile a un browser WWW. Questi programmi semplicemente fanno passare le transazioni email alla <> locale, chiamando uno dei <> disponibili o inoltrando queste transazioni via TCP. [[mail-mta]] === Il Programma Server FreeBSD incorpora di default sendmail, ma supporta anche altri programmi server di posta elettronica, alcuni dei quali sono: * exim; * postfix; * qmail. Di solito il programma server svolge due funzioni-si occupa di ricevere la posta in arrivo e di consegnare quella in partenza. Questo programma _non_ permette di prelevare la posta usando protocolli come POP o IMAP, ne tanto meno di "collegarsi" alle caselle di posta locali [.filename]#mbox# o di tipo Maildir. Per far questo hai bisogno di un altro <>. [WARNING] ==== Vecchie versioni di sendmail contengono alcuni seri problemi di sicurezza che possono dare la possibilità ad un attaccante di guadagnarsi un accesso locale e/o remote sulla tua macchina. Assicurati di eseguire una versione aggiornata per evitare questi problemi. In alternativa, installa un altro MTA dalla crossref:ports[ports,FreeBSD Ports Collection]. ==== [[mail-dns]] === Email e DNS Il DNS (Domain Name System) e il suo demone `named` giocano un ruolo fondamentale nella consegna della posta. Per consegnare la posta dal tuo host a un altro, il programma server cercherà l'host remoto nel DNS per determinare la macchina server che riceverà la posta per il destinatario. Lo stesso processo avviene quando un host remoto invia dei messaggi di posta alla tua macchina server di posta. Il DNS è responsabile della corrispondenza tra nomi host ed indirizzi IP, e memorizza anche informazioni specifiche per la consegna della posta, informazioni conosciute come record MX. Il record MX (Mail eXchanger) specifica quale/i host dovranno ricevere la posta per un particolare dominio. Se non hai un record MX per il tuo nome host o per il tuo dominio, la posta sarà consegnata direttamente al tuo host a condizione di avere un record A che mappa il tuo nome host al tuo indirizzo IP. Puoi vedere i record MX per un dominio usando il comando man:host[1], come mostrato nel seguente esempio: [source,shell] .... % host -t mx FreeBSD.org FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org .... [[mail-receive]] === Ricezione della Posta La ricezione della posta per il tuo dominio viene gestita dalla macchina server di posta. Questa raccoglierà la posta indirizzata al tuo dominio e la salverà nel formato [.filename]#mbox# (metodo per la memorizzazione della posta di default) o Maildir, a seconda delle tua configurazione. Una volta memorizzata, la posta può essere sia letta in modo locale usando applicazioni come man:mail[1] o mutt, sia prelevata in modo remoto usando protocolli come POP e IMAP. Ciò significa che se vuoi solo leggere la posta localmente, non hai bisogno di installare un server POP o IMAP. [[pop-and-imap]] ==== Accedere a caselle di posta remote usando POP o IMAP Per accedere a caselle di posta in modo remoto, devi avere l'accesso a un server POP o IMAP. Questi protocolli permettono agli utenti di collegarsi con facilità alle loro caselle di posta da locazioni remote. Benchè sia POP che IMAP permettono agli utenti di accedere alle caselle di posta in modo remoto, IMAP offre alcuni vantaggi, alcuni dei quali sono: * IMAP può memorizzare e prelevare i messaggi di posta su un server remoto. * IMAP supporta aggiornamenti simultanei. * IMAP può essere estremamente utile con connessioni lente poichè permette agli utenti di prelevare la struttura dei messaggi senza scaricarli completamente; può inoltre realizzare compiti come la ricerca su un server al fine di minimizzare il trasferimento dei dati tra client e server. Per installare un server POP o IMAP, devi seguire i seguenti passi: [.procedure] ==== . Scegli un server IMAP o POP che meglio soddisfa le tue necessità. I seguenti server POP e IMAP sono ben noti e si prestano come degli ottimi esempi: ** qpopper; ** teapop; ** imap-uw; ** courier-imap; . Installa il demone POP o IMAP di tua scelta dalla collezione dei port. . Se necessario, modifica il file [.filename]#/etc/inetd.conf# per avviare il server POP o IMAP. ==== [WARNING] ==== Nota che sia POP che IMAP trasmettono informazioni, inclusi il nome utente e la password in chiaro. Ciò significa che se vuoi mettere al sicuro la trasmissione di informazioni su questi protocolli, potresti considerare di effettuare tunnel di sessioni con man:ssh[1]. La creazione di tunnel di sessioni è descritta nella crossref:security[security-ssh-tunneling,SSH Tunneling]. ==== [[local]] ==== Accesso alle caselle di posta locali Si può accedere localmente alla casella di posta utilizzando un MUA sul server nel quale risiede la casella di posta. Questo può essere fatto usando applicazioni come mutt o man:mail[1]. [[mail-host]] === La Macchina Server di Posta La macchina server di posta è il nome del server che è responsabile della consegna e del ricevimento della posta per il tuo host, ed eventualmente per la tua rete. [[sendmail]] == Configurazione di sendmail man:sendmail[8] è il Mail Transfer Agent (MTA) di default su FreeBSD. Il compito di sendmail è di accettare posta dai Mail User Agent (MUA), e consegnarla al server di posta appropriato come definito nel suo file di configurazione. Inoltre sendmail può accettare connessioni via rete e consegnare i messaggi a caselle di posta locali o ad un altro programma. sendmail utilizza i seguenti file di configurazione: [.informaltable] [cols="1,1", frame="none", options="header"] |=== | File | Funzione |[.filename]#/etc/mail/access# |File database di accesso di sendmail |[.filename]#/etc/mail/aliases# |Alias delle caselle di posta |[.filename]#/etc/mail/local-host-names# |Lista di host per i quali sendmail accetta posta |[.filename]#/etc/mail/mailer.conf# |File di configurazione del programma di posta |[.filename]#/etc/mail/mailertable# |Tabella di consegna del programma di posta |[.filename]#/etc/mail/sendmail.cf# |File di configurazione principale di sendmail |[.filename]#/etc/mail/virtusertable# |Tabelle degli utenti e dei domini virtuali |=== === [.filename]#/etc/mail/access# Il database di accesso definisce quali host o indirizzi IP hanno accesso al server di posta locale e quale tipo di accesso hanno. Gli host possono essere catalogati come `OK`, `REJECT`, `RELAY` o possono semplicemente essere passati alla procedura di gestione degli errori di sendmail con un preciso errore. Gli host che sono definiti `OK`, che è il valore di default, possono spedire posta a questo host sempre che la destinazione finale della posta sia la macchina locale. Gli host che sono definiti `REJECT` vengono rifiutati per qualsiasi connessione di posta. Gli host che hanno l'opzione `RELAY` per i loro nomi host possono utilizzare questo server per spedire posta verso qualsiasi destinazione. .Configurazione del Database di Accesso di sendmail [example] ==== [.programlisting] .... cyberspammer.com 550 Non accettiamo posta dagli spammer FREE.STEALTH.MAILER@ 550 Non accettiamo posta dagli spammer altra.sorgente.di.spam REJECT okay.cyberspammer.com OK 128.32 RELAY .... ==== In questo esempio abbiamo cinque elementi. Gli host mittenti che corrispondono a quelli posti sul lato sinistro della tabella sono condizionati dall'azione posta sul lato destro della tabella. I primi due esempi passano un codice di errore alla procedura di sendmail che gestisce gli errori. Il messaggio viene restituito all'host remoto quando viene trovata una corrispondenza sul lato sinistro della tabella. Il terzo esempio rifiuta la posta da un host specifico su Internet, `altra.sorgente.di.spam`. Il quarto esempio accetta connessioni di posta da un host, `okay.cyberspammer.com`, che è più preciso rispetto a `cyberspammer.com` della prima linea. Le corrispondenze più precise sovrascrivono quelle meno precise. L'ultimo esempio permette il relay della posta elettronica agli host che hanno un indirizzo IP che inizia con `128.32`. Questi host possono spedire messaggi destinati ad altri server di posta attraverso questo server. Quando modifichi questo file, devi eseguire `make` in [.filename]#/etc/mail/# per aggiornare il database. === [.filename]#/etc/mail/aliases# Il database degli alias contiene una lista di caselle di posta virtuali che sono espanse in altri utenti, file, programmi o in altri alias. Seguono alcuni esempi che possono essere usati in [.filename]#/etc/mail/aliases#: .Alias di Posta [example] ==== [.programlisting] .... root: utentelocale ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail" .... ==== Il formato del file è semplice: il nome della casella di posta che si trova a sinistra dei due punti viene espanso negli elementi posti a destra dei due punti. Il primo esempio semplicemente espande la casella di posta `root` nella casella di posta `utentelocale`, che è di nuovo ricercata nel database degli alias. Se non viene trovata, allora il messaggio viene consegnato all'utente locale `utentelocale`. L'esempio successivo mostra una mailing list. La posta indirizzata alla casella di posta `ftp-bugs` viene espansa nelle tre caselle di posta locali `joe`, `eric`, e `paul`. Nota che una casella di posta remota può essere specificata come mailto:user@example.com[user@example.com]. Il terzo esempio mostra come scrivere la posta su un file, in questo caso [.filename]#/dev/null#. L'ultimo esempio mostra come mandare la posta a un programma, in questo caso il messaggio di posta diventa lo standard input di [.filename]#/usr/local/bin/procmail# tramite una pipe UNIX(R). Quando modifichi questo file, devi eseguire `make` in [.filename]#/etc/mail/# per aggiornare il database. === [.filename]#/etc/mail/local-host-names# Questo file è una lista di nomi host che man:sendmail[8] accetta come se fossero l'host locale. Metti i domini o gli host per i quali sendmail deve ricevere posta. Per esempio, se questo server di posta dovesse essere in grado di accettare posta per il dominio `example.com` e per l'host `mail.example.com`, il suo [.filename]#local-host-names# potrebbe assomigliare a questo: [.programlisting] .... example.com mail.example.com .... Quando modifichi questo file, devi riavviare man:sendmail[8] per attivare i cambiamenti. === [.filename]#/etc/mail/sendmail.cf# Il file di configurazione principale di sendmail, [.filename]#sendmail.cf# controlla l'intero comportamento di sendmail, inclusa ogni cosa, dalla rielaborazione degli indirizzi e-mail alla stampa del messaggio di rifiuto per i server di posta remoti. Naturalmente, avendo svariati compiti, questo file di configurazione è alquanto complesso e i suoi dettagli vanno oltre lo scopo di questa sezione. Fortunatamente, questo file necessita raramente di essere modificato per server di posta standard. Il file di configurazione principale di sendmail può essere costruito a partire da macro man:m4[1] che definiscono le caratteristiche e il comportamento di sendmail. Guarda [.filename]#/usr/src/contrib/sendmail/cf/README# per ulteriori dettagli. Quando modifichi questo file, devi riavviare man:sendmail[8] per attivare i cambiamenti. === [.filename]#/etc/mail/virtusertable# Il file [.filename]#virtusertable# mappa indirizzi di posta relativi a domini e caselle di posta virtuali in caselle di posta reali. Queste caselle di posta possono essere locali, remote, alias definiti in [.filename]#/etc/mail/aliases# o file. .Esempio di Mappatura per la Posta di un Dominio Virtuale [example] ==== [.programlisting] .... root@example.com root postmaster@example.com postmaster@noc.example.net @example.com joe .... ==== Nell'esempio precedente, abbiamo una mappatura per il dominio `example.com`. Questo file viene processato dall'alto verso il basso fermandosi alla prima corrispondenza trovata. Il primo elemento mappa mailto:root@example.com[root@example.com] nella casella di posta locale `root`. Il secondo elemento mappa mailto:postmaster@example.com[postmaster@example.com] nella casella di posta `postmaster` sull'host `noc.example.net`. Infine, se non sono state trovate corrispondenze per `example.com` fino a questo punto, verrà verificata l'ultima mappatura, che corrisponde a tutti gli altri messaggi di posta indirizzati a qualche utente di `example.com`. Questo verrà mappato nella casella di posta locale `joe`. [[mail-changingmta]] == Sostituzione del proprio Mail Transfer Agent Come già menzionato, l'MTA (Mail Transfer Agent, agente di trasferimento della posta elettronica) installato di default su FreeBSD è sendmail. Di conseguenza sendmail è responsabile della tua posta in partenza e di quella in arrivo. Comunque, per vari motivi, alcuni amministratori necessitano di cambiare l'MTA dei loro sistemi. Questi motivi spaziano dal voler semplicemente provare un altro MTA all'aver bisogno di una caratteristica o di un pacchetto specifico ritrovabile in un altro MTA. Fortunatamente, per qualsiasi motivo, FreeBSD semplifica il processo di sostituzione. === Installazione di un nuovo MTA Hai un'ampia scelta di MTA utilizzabili. Un buon punto di partenza è la <> dove puoi trovarne molti. Naturalmente sei libero di usare qualunque MTA proveniente da qualche sito, a condizione che tu riesca ad eseguirlo sotto FreeBSD. Inizia installando il tuo nuovo MTA. Una volta installato devi valutare se realmente soddisfa le tue necessità, inoltre devi avere la possibilità di configurare il tuo nuovo programma prima che subentri a sendmail. Valutato questo, devi essere sicuro che durante l'installazione del nuovo programma non ci siano stati tentativi di sovrascrivere binari di sistema come [.filename]#/usr/bin/sendmail#. Altrimenti, il tuo nuovo programma di posta è stato essenzialmente messo in attività prima che tu l'abbia configurato. Per cortesia fai riferimento alla documentazione dell'MTA che hai scelto per informazioni su come configurarlo. [[mail-disable-sendmail]] === Disabilitazione di sendmail La procedura usata per avviare sendmail cambia significativamente tra la 4.5-RELEASE e la 4.6-RELEASE. Di conseguenza, la procedura usata per disabilitarlo è leggermente differente a seconda della versione di FreeBSD utilizzata. [WARNING] ==== Se disabiliti il servizio di consegna della posta di sendmail in questo modo, è importante che questo venga rimpiazzato con un altro sistema di consegna della posta. Se non lo farai, le funzioni di sistema come man:periodic[8] saranno incapaci di inviare i loro risultati tramite e-mail come normalmente prevedono di fare. Molte parti del tuo sistema potrebbero presupporre di avere un sistema funzionante compatibile con sendmail. Se le applicazioni continuano a usare i binari di sendmail per tentare di spedire e-mail dopo che tu l'hai disabilitato, la posta potrebbe finire in una coda inattiva di sendmail, senza che venga mai consegnata. ==== ==== FreeBSD 4.5-STABLE prima del 4/4/2002 e precedenti (inclusa 4.5-RELEASE e precedenti) Metti: [.programlisting] .... sendmail_enable="NO" .... in [.filename]#/etc/rc.conf#. In questo modo si disabiliterà il servizio di ricezione della posta di sendmail, ma se [.filename]#/etc/mail/mailer.conf# (vedi sotto) non viene modificato, sendmail verrà ancora usato per spedire e-mail. ==== FreeBSD 4.5-STABLE dopo il 4/4/2002 (inclusa 4.6-RELEASE e successive) Per disabilitare completamente sendmail, incluso il servizio della posta in uscita, devi mettere [.programlisting] .... sendmail_enable="NONE" .... in [.filename]#/etc/rc.conf.# Se vuoi solamente disabilitare il servizio di ricezione della posta di sendmail, devi mettere [.programlisting] .... sendmail_enable="NO" .... in [.filename]#/etc/rc.conf#. Comunque, se la ricezione della posta è disabilitata, la consegna locale funzionerà ancora. Maggiori informazioni sulle opzioni di avvio di sendmail sono disponibili nella pagina man di man:rc.sendmail[8]. ==== FreeBSD 5.0-STABLE e Successive Per disabilitare completamente sendmail, servizi di posta in ingresso e in uscita inclusi, devi usare [.programlisting] .... sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" .... in [.filename]#/etc/rc.conf.# Se vuoi solamente disabilitare il servizio di ricezione della posta di sendmail, devi mettere [.programlisting] .... sendmail_enable="NO" .... in [.filename]#/etc/rc.conf#. Molte informazioni sulle opzioni di avvio di sendmail sono disponibili nella pagina man di man:rc.sendmail[8]. === Esecuzione del nuovo MTA all'avvio Hai due possibili metodi per eseguire il tuo nuovo MTA all'avvio, a seconda della versione di FreeBSD utilizzata. ==== FreeBSD 4.5-STABLE prima del 11/4/2002 (inclusa 4.5-RELEASE e precedenti) Posiziona uno script in [.filename]#/usr/local/etc/rc.d/# con estensione [.filename]#.sh# ed eseguibile da `root`. Lo script deve accettare i parametri `start` e `stop`. Nella fase di avvio di FreeBSD gli script di sistema eseguiranno il comando [.programlisting] .... /usr/local/etc/rc.d/supermailer.sh start .... che puoi anche usare per avviare manualmente il server. Nella fase di chiusura di FreeBSD, gli script di sistema useranno l'opzione `stop`, eseguendo il comando [.programlisting] .... /usr/local/etc/rc.d/supermailer.sh stop .... che puoi anche usare per arrestare manualmente il server mentre il sistema è in funzione. ==== FreeBSD 4.5-STABLE dopo il 11/4/2002 (inclusa 4.6-RELEASE e successive) Con le versioni recenti di FreeBSD, puoi usare il metodo precedente oppure puoi mettere [.programlisting] .... mta_start_script="nomefile" .... in [.filename]#/etc/rc.conf#, dove _nomefile_ è il nome dello script che vuoi eseguire all'avvio per avviare il tuo MTA. === Sostituzione di sendmail come programma di posta di default del sistema sendmail è così onnipresente come programma standard su sistemi UNIX(R) che alcuni programmi lo suppongono già installato e configurato. Per questa ragione, molti degli altri MTA forniscono la loro compatibile implementazione dell'interfaccia a riga di comando di sendmail; questo agevola il loro utilizzo come sostituti "drop-in" di sendmail. Quindi, se usi un altro programma di posta, dovrai assicurarti che i programmi che tentano di eseguire i binari standard di sendmail come [.filename]#/usr/bin/sendmail# in realtà eseguano il programma di posta da te scelto. Fortunatamente, FreeBSD fornisce un meccanismo chiamato man:mailwrapper[8] che fa questo lavoro per te. Quando sendmail è operativo, dovresti vedere in [.filename]#/etc/mail/mailer.conf# qualcosa di simile a questo: [.programlisting] .... sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail .... Questo significa che quando uno di questi comandi (come [.filename]#sendmail# stesso) viene eseguito, in realtà il sistema invoca una copia di mailwrapper di nome [.filename]#sendmail#, la quale esamina [.filename]#mailer.conf# ed esegue [.filename]#/usr/libexec/sendmail/sendmail#. Questo meccanismo facilita la sostituzione dei binari che sono realmente eseguiti quando vengono invocate queste funzioni di default di [.filename]#sendmail#. Quindi se vuoi che [.filename]#/usr/local/supermailer/bin/sendmail-compat# sia eseguito al posto di sendmail, devi modificare [.filename]#/etc/mail/mailer.conf# in questo modo: [.programlisting] .... sendmail /usr/local/supermailer/bin/sendmail-compat send-mail /usr/local/supermailer/bin/sendmail-compat mailq /usr/local/supermailer/bin/mailq-compat newaliases /usr/local/supermailer/bin/newaliases-compat hoststat /usr/local/supermailer/bin/hoststat-compat purgestat /usr/local/supermailer/bin/purgestat-compat .... === Conclusione Una volta che hai configurato ogni cosa a tuo piacimento, devi terminare i processi di sendmail di cui non hai più bisogno e avviare i processi appartenenti al tuo nuovo programma, oppure puoi semplicemente riavviare il sistema. Riavviando il sistema avrai la possibilità di verificare se il sistema sia stato configurato correttamente per eseguire il tuo nuovo MTA in modo automatico all'avvio. [[mail-trouble]] == Risoluzione dei Problemi === Perché devo usare nomi di dominio completi (FQDN) per gli host del mio dominio? Probabilmente ti accorgerai che l'host è effettivamente in un dominio differente; per esempio, se sei in `foo.bar.edu` e desideri raggiungere un host chiamato `mumble` appartenente al dominio `bar.edu`, dovrai riferirti a questo tramite un nome di dominio completo, `mumble.bar.edu`, invece del solo `mumble`. Tradizionalmente, questo era permesso dai resolver BIND di BSD. Tuttavia la versione corrente di BIND equipaggiata con FreeBSD non prevede più l'abbreviazione di default per nomi di dominio non completi all'infuori del dominio in cui sei. Quindi l'host `mumble` sarà giudicato come `mumble.foo.bar.edu`, oppure sarà ricercato per il dominio radice. Questo differisce dal comportamento precedente, dove la ricerca continuava attraverso `mumble.bar.edu`, e `mumble.edu`. Dai un'occhiata all'RFC 1535 per i motivi per cui questa sia considerata una cattiva pratica, o persino un buco di sicurezza. Come buona soluzione al problema, puoi mettere la linea: [.programlisting] .... search foo.bar.edu bar.edu .... al posto della precedente: [.programlisting] .... domain foo.bar.edu .... nel tuo [.filename]#/etc/resolv.conf#. Comunque, assicurati che l'ordine di ricerca non oltrepassi il "confine tra amministrazione locale e pubblica", come definito nell'RFC 1535. === sendmail riporta l'errore mail loops back to myself La risposta è contenuta nelle FAQ di sendmail come segue: [.programlisting] .... Ottengo messaggi di errore, come questo: 553 MX list for domain.net points back to relay.domain.net 554 ... Local configuration error Come posso risolvere questo problema? Hai chiesto che la posta per il dominio (es., domain.net) sia inoltrata a un host specifico (in questo caso, relay.domain.net) attraverso l'uso di un record MXrecord MX, ma la macchina di inoltro non si riconosce appartenente a domain.net. Aggiungi domain.net in /etc/mail/local-host-names [chiamato /etc/sendmail.cw nelle versioni precedenti alla 8.10] (se stai usando FEATURE(use_cw_file)) oppure aggiungi Cw domain.net in /etc/mail/sendmail.cf. .... Le FAQ di sendmail possono essere trovate su http://www.sendmail.org/faq/[http://www.sendmail.org/faq/] ed è raccomandato leggerle se vuoi "perfezionare" la tua configurazione di posta. -=== Come posso eseguire un server di posta su un host connesso in dial-up tramite PPPPPP ? +=== Come posso eseguire un server di posta su un host connesso in dial-up tramite PPP ? Vuoi collegare ad Internet una macchina FreeBSD posta sulla tua LAN. La macchina FreeBSD sarà un gateway di posta per la LAN. La connessione PPP non è molto indicata per questo scopo. Esistono almeno due modi per far questo. Un modo è usare UUCP. L'altro è trovare un server Internet a tempo pieno che fornisca un servizio MX secondario per il tuo dominio. Per esempio, se il dominio della tua società è `example.com` e il tuo fornitore di servizi Internet ha attivato `example.net` per fornire il servizio MX secondario al tuo dominio, allora: [.programlisting] .... example.com. MX 10 example.com. MX 20 example.net. .... Solo un host deve essere specificato come ultimo ricevente (aggiungi `Cw example.com` in [.filename]#/etc/mail/sendmail.cf# su `example.com`). Quando `sendmail` tenterà di consegnare la posta proverà a connettersi alla tua connessione modem (`example.com`). Molto probabilmente finirà in time out poiché non sei online. In modo automatico `sendmail` consegnerà la posta al server MX secondario, ad esempio il tuo provider Internet (`example.net`). Il server MX secondario tenterà periodicamente di collegarsi al tuo host per consegnare la posta all'host MX primario (`example.com`). Come script di login potresti usare qualcosa di simile a questo: [.programlisting] .... #!/bin/sh # Mettimi in /usr/local/bin/pppmyisp ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp .... Se hai intenzione di creare uno script di login separato per un utente potresti usare `sendmail -qRexample.com` nello script precedente. Questo forzerà a processare immediatamente tutta la posta per `example.com` situata nella tua coda. Segue un'ulteriore sottigliezza della situazione: Messaggio rubato dalla {freebsd-isp}. [.programlisting] .... > forniamo l'MX secondario per un cliente. Il cliente si connette > automaticamente ai nostri servizi molte volte al giorno per ottenere la > posta per il suo MX primario (non chiamiamo il suo server quando arriva > posta per il suo dominio). Il nostro sendmail processa la posta in coda > ogni 30 minuti. Attualmente il cliente sta 30 minuti online per assicurarsi > che tutta la posta vada all'MX primario. > > Esiste un comando che permetta di configurare sendmail in modo tale da > spedire tutta la posta in quel momento? Naturalmente l'utente non ha > privilegi di root sulla nostra macchina. Nella sezione privacy flags di sendmail.cf, c'è una definizione Opgoaway,restrictqrun Rimuovi restrictqrun per permettere a utenti non root di avviare l'elaborazione della coda. Inoltre potresti risistemare gli MX. Noi siamo l'MX primario per i nostri clienti come questo, e abbiamo definito: # Se siamo il miglior MX per un host, prova direttamente invece di generare # errori di configurazione locale. OwTrue In questo modo un server remoto consegnerà direttamente a te, senza tentare di connettersi al cliente. Dopodiché tu spedisci al tuo cliente. Funziona solamente con gli host, quindi hai bisogno che il tuo cliente chiami la sua macchina di posta customer.com così come nomehost.customer.com nel DNS. Basta mettere un record A nel DNS per customer.com. .... === Perché continuo a ottenere l'errore Relaying Denied quando spedisco posta da altri host? Con l'installazione di default di FreeBSD, sendmail viene configurato in modo tale da permettere di spedire posta solamente dall'host sul quale è in esecuzione. Per esempio, se c'è installato un server POP, allora gli utenti saranno in grado di controllare la posta da scuola, dal lavoro, o da altre postazioni remote ma tuttavia non potranno inviare messaggi di posta all'esterno da postazioni esterne. Tipicamente, pochi istanti dopo il tentativo, verrà spedita una email da MAILER-DAEMON con il messaggio di errore `5.7 Relaying Denied`. Esistono diversi modi per aggirare questo problema. La soluzione più semplice è mettere il proprio indirizzo assegnato dall'ISP nel file che contiene i domini a cui viene permesso di effettuare il relay, [.filename]#/etc/mail/relay-domains#. Un modo veloce per far questo può essere: [source,shell] .... # echo "your.isp.example.com" > /etc/mail/relay-domains .... Dopo aver creato o modificato questo file devi riavviare sendmail. Questa soluzione è ideale se sei un amministratore del server e non desideri spedire posta localmente, o se vorresti usare un client/sistema punta e clicca su un'altra macchina o perfino su un altro ISP. Inoltre è molto utile se hai solo uno o due account di posta configurati. Se ci sono molti indirizzi da aggiungere, puoi semplicemente aprire questo file con il tuo editor di testo preferito e aggiungere i domini, uno per riga: [.programlisting] .... your.isp.example.com other.isp.example.net users-isp.example.org www.example.org .... Ora l'invio della posta tramite il tuo sistema, da parte di qualche host in lista (a condizione che l'utente abbia un account sul tuo sistema), avrà successo. Questo è un buon metodo per permettere agli utenti di spedire posta dal tuo sistema in modo remoto senza dare la possibilità a qualcuno di spedire SPAM tramite il tuo sistema. [[mail-advanced]] == Argomenti Avanzati La seguente sezione tratta argomenti più complicati come l'organizzazione e la configurazione della posta per tutto il tuo dominio. [[mail-config]] === Configurazione di Base Dalla macchina FreeBSD, dovresti essere in grado di spedire posta a host esterni a condizione di aver sistemato [.filename]#/etc/resolv.conf# o di avere in esecuzione un proprio server dei nomi. Se vuoi che la posta per il tuo host sia consegnata all'MTA (es., sendmail) in esecuzione sul tuo host FreeBSD, esistono due metodi per farlo: * Eseguire un proprio server dei nomi e avere un proprio dominio. Per esempio, `FreeBSD.org` * Ricevere la posta direttamente sul tuo host. Questo viene fatto consegnando la posta direttamente al nome DNS corrente della tua macchina. Per esempio, `example.FreeBSD.org`. Indipendentemente dal metodo scelto, affinché la posta possa essere consegnata direttamente al tuo host, devi avere un indirizzo IP statico permanente (non un indirizzo dinamico, come avviene nella maggior parte delle configurazioni dial-up di PPP). Se sei dietro a un firewall, devi abilitare il traffico SMTP in entrata. Se vuoi ricevere la posta direttamente sul tuo host, devi verificare una di queste due cose: * Assicurati che il record MX (con il numero più basso) relativo al tuo host nel tuo DNS punti all'indirizzo IP del tuo host. * Assicurati che non ci siano record MX nel tuo DNS per il tuo host. Entrambi questi due metodi ti permettono di ricevere posta direttamente sul tuo host. Prova questi comandi: [source,shell] .... # hostname example.FreeBSD.org # host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX .... Se ottieni un risultato simile, l'invio diretto a mailto:yourlogin@example.FreeBSD.org[yourlogin@example.FreeBSD.org] dovrebbe funzionare senza problemi (assumendo che sendmail sia correttamente in esecuzione su `example.FreeBSD.org`). Se invece vedi qualcosa di simile a questo: [source,shell] .... # host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org .... Tutta la posta spedita al tuo host (`example.FreeBSD.org`) finirà per essere raccolta su `hub` sotto lo stesso nome utente invece di essere spedita direttamente al tuo host. L'informazione precedente viene gestita dal tuo server DNS. Il record DNS che riporta l'informazione di instradamento della posta è l'elemento __M__ail e__X__change. Se non esistono record MX, la posta sarà consegnata direttamente all'host attraverso il suo indirizzo IP. L'elemento MX per `freefall.FreeBSD.org` in passato assomigliava a questo: [.programlisting] .... freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com .... Come puoi vedere, `freefall` aveva molti elementi MX. Il numero MX più basso è l'host che, se disponibile, riceve direttamente la posta; se per qualche ragione questo non è accessibile, gli altri (qualche volta chiamati "MX di backup") accettano i messaggi temporaneamente, e li passano all'host attivo con numero inferiore, fino all'host con il numero più basso. I server MX alternativi dovrebbero avere connessioni Internet indipendenti dalla propria al fine di risultare più utili. Il tuo ISP o un tuo amico non dovrebbero avere problemi a darti questo servizio. [[mail-domain]] === Posta per il Tuo Dominio Per organizzare un server di posta hai bisogno che la posta inviata alle stazioni di lavoro sia ricevuta direttamente sul server di posta. Sostanzialmente, hai bisogno di "richiedere" che la posta per i nomi host del tuo dominio (in questo caso `*.FreeBSD.org`) sia deviata al server di posta in modo tale che i tuoi utenti possono raccogliere la loro posta sul server di posta principale. Per rendere la vita più facile, dovrebbe esistere su entrambe le macchine un account utente con lo stesso _nome utente_. Usa man:adduser[8] per farlo. La macchina server di posta che utilizzerai deve essere designata come la macchina che scambia la posta per tutte le postazioni sulla rete. Questo viene realizzato attraverso la configurazione del DNS in modo simile a quanto segue: [.programlisting] .... example.FreeBSD.org A 204.216.27.XX ; Stazione di lavoro MX 10 hub.FreeBSD.org ; Server di posta .... In questo modo la posta per la stazione di lavoro sarà reindirizzata al server di posta senza preoccuparsi dove punti il record A. La posta viene inviata all'host MX. Non puoi effettuare queste modifiche da solo a meno che non hai in esecuzione un tuo server DNS. Se non puoi eseguire un server DNS, consulta il tuo ISP o chiunque ti fornisca il servizio DNS. Se stai facendo dell'hosting di posta elettronica virtuale, le seguenti informazioni ti torneranno utili. In questo esempio, assumiamo che hai un cliente con un proprio dominio, in questo caso `customer1.org`, e vuoi che tutta la posta per `customer1.org` sia spedita alla tua macchina server di posta `mail.myhost.com`. L'elemento nel tuo DNS dovrebbe assomigliare a questo: [.programlisting] .... customer1.org MX 10 mail.myhost.com .... _Non_ hai bisogno di un record A per `customer1.org` se vuoi solamente gestire la posta per tale dominio [NOTE] ==== Sii consapevole che un ping su `customer1.org` non funzionerà se non esiste un record A per tale dominio. ==== L'ultima cosa che devi fare è indicare a sendmail, posto sulla tua macchina server, per quali domini e/o host deve accettare posta. Esistono differenti modi per farlo. I seguenti due funzionano entrambi: * Se usi `FEATURE(use_cw_file)` aggiungi gli host al tuo file [.filename]#/etc/mail/local-host-names#. Se usi una versione di sendmail precedente alla 8.10, il file da usare è [.filename]#/etc/sendmail.cw#. * Se usi la versione di sendmail 8.10 o superiore aggiungi la riga `Cwyour.host.com` al tuo [.filename]#/etc/sendmail.cf# o [.filename]#/etc/mail/sendmail.cf#. [[SMTP-UUCP]] == SMTP con UUCP La configurazione di sendmail di default su FreeBSD è designata per siti che si collegano direttamente a Internet. I siti che vogliono scambiarsi lo loro posta tramite UUCP devono installare un altro file di configurazione di sendmail. Editare a mano il file [.filename]#/etc/mail/sendmail.cf# è materia da esperti. La versione 8 di sendmail genera file di configurazione tramite la preelaborazione di man:m4[1], dove l'attuale configurazione avviene su un livello di astrazione più alto. I file di configurazione di man:m4[1] possono essere trovati sotto [.filename]#/usr/shared/sendmail/cf#. Il file [.filename]#README# nella directory [.filename]#cf# può servire come introduzione di base alla configurazione di man:m4[1]. Il miglior modo per supportare la consegna UUCP è usare la caratteristica `mailertable`. Questa crea un database che sendmail può usare per prendere le decisioni di instradamento. Prima di tutto, devi creare il tuo file [.filename]#.mc#. La directory [.filename]#/usr/shared/sendmail/cf/cf# contiene alcuni esempi. Assumendo che tu abbia chiamato il tuo file [.filename]#foo.mc#, tutto quello che devi fare per convertirlo in un valido [.filename]#sendmail.cf# è: [source,shell] .... # cd /etc/mail # make foo.cf # cp foo.cf /etc/mail/sendmail.cf .... Un tipico file [.filename]#.mc# potrebbe assomigliare a questo: [.programlisting] .... VERSIONID(`Il tuo numero di versione') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', il.tuo.relay.uucp) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw il.tuo.nome.host.alias Cw iltuonodouucp.UUCP .... Le righe contenenti le caratteristiche `accept_unresolvable_domains`, `nocanonify`, and `confDONT_PROBE_INTERFACES` impediscono l'uso del DNS durante la consegna della posta. La clausola `UUCP_RELAY` è necessaria per supportare la consegna UUCP. Metti semplicemente un nome host di Internet che è in grado di gestire indirizzi di pseudo-domini .UUCP; molto probabilmente, metterai il relay del tuo ISP. Una volta fatto questo, hai bisogno del file [.filename]#/etc/mail/mailertable#. Se hai solo un collegamento per l'esterno che viene usato per tutta la tua posta, la seguente riga sarà sufficiente: [.programlisting] .... # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:il.tuo.relay.uucp .... Un esempio più complesso potrebbe essere simile a questo: [.programlisting] .... # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: .... Le prime tre righe gestiscono dei casi speciali dove la posta indirizzata a quel dominio non dovrebbe essere spedita tramite l'instradamento di default, ma piuttosto tramite alcuni UUCP di confine al fine di "accorciare" il percorso di consegna. La quarta riga gestisce la posta per il dominio Ethernet locale la quale può essere consegnata usando SMTP. Infine, gli UUCP di confine sono menzionati con la notazione a pseudo-dominio .UUCP, per permettere a un `uucp-diconfine !destinatario` di sovrascrivere le regole di default. L'ultima riga è sempre un singolo punto, a cui corrisponde ogni altra cosa e che rappresenta la consegna UUCP tramite l'UUCP di confine che viene usato come il tuo gateway di posta universale verso il mondo. Tutti i nomi dei nodi dietro alla parola `uucp-dom:` devono essere validi UUCP di confine, come puoi verificare usando il comando `uuname`. Si ricorda che questo file deve essere convertito in un file database DBM prima di essere usato. La riga di comando che realizza ciò è messa come un commento in cima al file [.filename]#mailertable#. Devi sempre eseguire quel comando ogni volta che modifichi il file [.filename]#mailertable#. Ultimo suggerimento: se non sei sicuro che alcuni instradamenti di posta potrebbero funzionare, ricordati l'opzione `-bt` di sendmail. Questa avvia sendmail in _modalità test indirizzo_; digita semplicemente `3,0`, seguito dall'indirizzo su cui vuoi verificare l'instradamento della posta. L'ultima riga ti informa quale agente di posta interno è stato utilizzato, quale host di destinazione questo agente contatterà, e l'indirizzo (molto probabilmente tradotto). Lascia questa modalità digitando kbd:[Ctrl+D]. [source,shell] .... % sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter
> 3,0 foo@example.com canonify input: foo @ example . com ... parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . > > ^D .... [[outgoing-only]] == Configurazione del Sistema di Posta solo per l'Invio Esistono molti casi in cui vorresti avere la possibilità di inviare la posta attraverso un relay. Alcuni esempi sono: * Il tuo computer è una macchina desktop, tuttavia vorresti essere in grado di usare programmi come man:send-pr[1]. Per fare ciò, dovresti usare il relay di posta del tuo ISP. * Il computer è un server che non gestisce localmente la posta, ma demanda la gestione di tutta la posta ad un relay inoltrandola in modo opportuno. La maggior parte degli MTA sono in grado di soddisfare questa particolare richiesta. Sfortunatamente, configurare in modo opportuno un MTA standard affinchè permetta solo l'inoltro della posta può essere un compito molto oneroso. Usare applicazioni come sendmail e postfix per questo fine risulta spesso troppo eccessivo. Inoltre, alcuni servizi di accesso a Internet prevedono nel contratto l'impossibilità da parte del cliente di usare un "server di posta". Il modo più facile per colmare questa necessità è installare il port package:mail/ssmtp[]. Esegui i seguenti comandi come `root`: [source,shell] .... # cd /usr/ports/mail/ssmtp # make install replace clean .... Una volta installato, il port package:mail/ssmtp[] può essere configurato con quattro righe nel file [.filename]#/usr/local/etc/ssmtp/ssmtp.conf#: [.programlisting] .... root=il_tuo_indirizzo_di_posta_reale mailhub=mail.esempio.com rewriteDomain=esempio.com hostname=_HOSTNAME_ .... Assicurati di usare il tuo indirizzo di posta per la variabile `root`. Inserisci il server di posta di inoltro del tuo ISP al posto di `mail.esempio.com` (alcuni ISP lo chiamano come il "server di posta in uscita" o il "server SMTP"). Assicurati di disabilitare sendmail, incluso il servizio di posta in uscita. Guarda la <> per maggiori dettagli. Il port package:mail/ssmtp[] ha altre opzioni disponibili. Guarda il file di configurazione di esempio [.filename]#/usr/local/etc/ssmtp# e la pagina man di ssmtp per alcuni esempi e maggiori informazioni. Configurando ssmtp in questo modo permetterai ai programmi sul tuo computer che necessitano di spedire posta di funzionare correttamente, senza violare le politiche del tuo ISP e senza permettere che il tuo computer sia utilizzato per l'inoltro di spam. [[SMTP-dialup]] == Uso della Posta con una Connessione Dialup Se hai un indirizzo IP statico, non hai bisogno di adattare nulla alla configurazione di default. Imposta come nome host il nome Internet che ti è stato assegnato e sendmail farà il resto. Se hai un indirizzo IP assegnato in modo dinamico e usi una connessione PPP dialup per Internet, allora probabilmente avrai una casella di posta sul server di posta del tuo ISP. Assumiamo che il dominio del tuo ISP sia `example.net`, che il tuo nome utente sia `user`, che hai chiamato la tua macchina `bsd.home`, e che il tuo ISP ti ha detto che puoi usare `relay.example.net` come relay per la posta. Per ricevere la posta dalla tua casella, devi installare un agente di ricupero. L'utility fetchmail è una buona scelta poichè supporta diversi tipi di protocolli. Questo programma è disponibile come package o dalla collezione dei port (package:mail/fetchmail[]). Di solito, il tuo ISP fornirà POP. Se stai usando PPP a livello utente, puoi prelevare automaticamente la tua posta quando viene stabilita una connessione a Internet mettendo la seguente riga in [.filename]#/etc/ppp/ppp.linkup#: [.programlisting] .... MYADDR: !bg su user -c fetchmail .... Se stai usando sendmail (come mostrato sotto) per consegnare posta ad account non locali, probabilmente vorrai che sendmail processi la tua coda di posta non appena viene stabilita una connessione ad Internet. Per far questo, metti il seguente comando dopo il comando `fetchmail` in [.filename]#/etc/ppp/ppp.linkup#. [.programlisting] .... !bg su user -c "sendmail -q" .... Assumiamo che tu abbia un account per `user` su `bsd.home`. Nella directory home di `user` su `bsd.home`, crea il file [.filename]#.fetchmailrc# così composto: [.programlisting] .... poll example.net protocol pop3 fetchall pass MySecret .... Questo file non dovrebbe essere leggibile da nessuno ad eccezione di `user` poichè contiene la password `MySecret`. Per spedire la posta con il corretto header `from:`, devi indicare a sendmail di usare mailto:user@example.net[user@example.net] piuttosto che mailto:user@bsd.home[user@bsd.home]. Inoltre vorrai indicare a sendmail di spedire tutta la posta tramite `relay.example.net`, permettendo una veloce trasmissione della posta. Il seguente file [.filename]#.mc# dovrebbe essere sufficiente: [.programlisting] .... VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`example.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.example.net') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl .... Fai riferimento alla precedente sezione per i dettagli su come trasformare questo file [.filename]#.mc# nel file [.filename]#sendmail.cf#. Inoltre, non dimenticarti di riavviare sendmail dopo aver aggiornato il file [.filename]#sendmail.cf#. [[SMTP-Auth]] == Autenticazione SMTP Avere un'Autenticazione SMTP operativa sul tuo server di posta porta numerosi benefici. L'Autenticazione SMTP aggiunge un ulteriore strato di sicurezza a sendmail, e ha il vantaggio di dare agli utenti mobili che cambiano host la possibilità di usare lo stesso server di posta senza avere la necessità di riconfigurare ogni volta i settaggi dei loro programmi client di posta. [.procedure] ==== . Installa dai port package:security/cyrus-sasl2[]. Puoi trovare questo port in package:security/cyrus-sasl2[]. Il port package:security/cyrus-sasl2[] ha diverse opzioni di compilazione. Per il metodo di autenticazione SMTP che useremo, assicurati che l'opzione `LOGIN` non sia disabilitata. . Dopo aver installato package:security/cyrus-sasl2[], edita [.filename]#/usr/local/lib/sasl2/Sendmail.conf# (o crealo se non esiste) e aggiungi la seguente riga: + [.programlisting] .... pwcheck_method: saslauthd .... . Quindi, installa package:security/cyrus-sasl2-saslauthd[], edita [.filename]#/etc/rc.conf# aggiungendo la riga seguente: + [.programlisting] .... saslauthd_enable="YES" .... + ed infine avvia il demone saslauthd: + [source,shell] .... # /usr/local/etc/rc.d/saslauthd start .... + Questo demone serve come mediatore con sendmail per autenticare gli utenti tramite il proprio database [.filename]#passwd# di FreeBSD. Questo procedimento evita di creare un nuovo set di nomi utenti e password per ogni utente che necessita di usare l'autenticazione SMTP, mantenendo la password di login uguale alla password di posta. . Ora aggiungi le seguenti righe in [.filename]#/etc/make.conf#: + [.programlisting] .... SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl2 .... + Queste righe daranno, in fase di compilazione di sendmail, le giuste opzioni di configurazione per linkare a package:cyrus-sasl2[]. Assicurati che package:cyrus-sasl2[] sia installato prima di ricompilare sendmail. . Ricompila sendmail eseguendo i seguenti comandi: + [source,shell] .... # cd /usr/src/lib/libsmutil # make cleandir && make obj && make # cd /usr/src/lib/libsm # make cleandir && make obj && make # cd /usr/src/usr.sbin/sendmail # make cleandir && make obj && make && make install .... + Se [.filename]#/usr/src# non ha subito enormi cambiamenti e se le librerie condivise di cui si ha bisogno sono disponibili, la compilazione di sendmail non dovrebbe avere problemi. . Dopo aver compilato e reinstallato sendmail, edita il tuo file [.filename]#/etc/mail/freebsd.mc# (o qualunque altro file che usi come file [.filename]#.mc#. Molti amministratori preferiscono usare, per unicità, l'output di man:hostname[1] come nome del file [.filename]#.mc#). Aggiungi le seguenti righe: + [.programlisting] .... dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl .... + Queste opzioni configurano i vari metodi che sendmail ha a disposizione per autenticare gli utenti. Se vuoi usare un metodo diverso da pwcheck, guarda la documentazione inclusa nel package. . Per finire, esegui man:make[1] in [.filename]#/etc/mail#. Questo eseguirà il tuo nuovo file [.filename]#.mc# e creerà un file [.filename]#.cf# di nome [.filename]#freebsd.cf# (o con il nome che hai usato per il file [.filename]#.mc#). Quindi esegui il comando `make install restart`, che copierà il file in [.filename]#sendmail.cf#, e riavvierà correttamente sendmail. Per maggiori informazioni su questa procedura, dovresti prendere come riferimento [.filename]#/etc/mail/Makefile#. ==== Se tutto è andato per il verso giusto, dovresti essere in grado di inviare un messaggio di prova dopo aver inserito le informazioni di login nel programma client di posta. Per ulteriori indagini, setta il `LogLevel` di sendmail a 13 e guarda il file [.filename]#/var/log/maillog# per eventuali errori. Per ulteriori informazioni, guarda la pagina riguardante http://www.sendmail.org/\~ca/email/auth.html[l'autenticazione SMTP] di sendmail. [[mail-agents]] == Mail User Agent Un Mail User Agent (MUA) è un'applicazione che viene usata per inviare e ricevere la posta elettronica. Man mano che la posta "evolve" e diventa più complessa, gli MUA diventano sempre più potenti nel modo in cui essi interagiscono con la posta elettronica; ciò fornisce agli utenti maggiori funzionalità e flessibilità. FreeBSD supporta svariati mail user agent, che possono essere facilmente installati usando la crossref:ports[ports,FreeBSD Ports Collection]. Gli utenti possono scegliere tra client di posta con un'interfaccia grafica come evolution o balsa, client basati sulla console come mutt, pine e `mail`, oppure interfacce web utilizzate da alcune grandi organizzazioni. [[mail-command]] === mail man:mail[1] è il Mail User Agent (MUA) di default su FreeBSD. Si tratta di un MUA basato sulla console che offre tutte le funzionalità di base richieste per inviare e ricevere messaggi di posta testuali, anche se è limitato nelle capacità di gestione degli allegati, e può solo supportare caselle di posta locali. Sebbene `mail` non supporta in modo nativo interazioni con server POP o IMAP, queste caselle di posta possono essere scaricate nel file [.filename]#mbox# locale usando un'applicazione come fetchmail, che verrà discussa più tardi in questo capitolo (<>). Al fine di inviare o ricevere la posta, invoca semplicemente il comando `mail` come nel seguente esempio: [source,shell] .... % mail .... I contenuti delle caselle di posta degli utenti in [.filename]#/var/mail# sono letti automaticamente dall'utility `mail`. Se la casella di posta è vuota, l'utility esce con un messaggio che indica che non è stato trovato nessun messaggio di posta. Una volta che la casella di posta è stata letta, viene avviata l'interfaccia dell'applicazione, e vengono visualizzati una lista di messaggi. I messaggi sono numerati in modo automatico, come nel seguente esempio: [source,shell] .... Mail version 8.1 6/6/93. Type ? for help. "/var/mail/marcs": 3 messages 3 new >N 1 root@localhost Mon Mar 8 14:05 14/510 "test" N 2 root@localhost Mon Mar 8 14:05 14/509 "user account" N 3 root@localhost Mon Mar 8 14:05 14/509 "sample" .... I messaggi possono ora essere letti usando il comando kbd:[t] di `mail`, seguito dal numero del messaggio che si vuole visualizzare. In questo esempio, leggeremo il primo messaggio di posta: [source,shell] .... & t 1 Message 1: From root@localhost Mon Mar 8 14:05:52 2004 X-Original-To: marcs@localhost Delivered-To: marcs@localhost To: marcs@localhost Subject: test Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST) From: root@localhost (Charlie Root) Questo è un messaggio di prova, per favore rispondi se lo ricevi. .... Come puoi vedere nell'esempio precedente, il tasto kbd:[t] visualizza il messaggio completo di tutte le sue intestazioni (header). Per visualizzare ancora la lista dei messaggi, puoi usare il tasto kbd:[h]. Se il messaggio di posta richiede una replica, puoi usare `mail` per rispondere, usando il tasto kbd:[R] o kbd:[r] di `mail`. Il tasto kbd:[R] dice a `mail` di rispondere solamente al mittente del messaggio, mentre kbd:[r] replica non solo al mittente, ma anche agli altri eventuali destinatari del messaggio originario. Puoi anche impartire quei comandi con un suffisso relativo al numero di messaggio per il quale intendi rispondere. Fatto ciò, inserisci la tua risposta, segnalando la fine del messaggio con un singolo punto (kbd:[.]) su una nuova linea. Ecco un esempio: [source,shell] .... & R 1 To: root@localhost Subject: Re: test Thank you, I did get your email. . EOT .... Per inviare un nuovo messaggio, puoi usare il tasto kbd:[m], seguito dall'indirizzo di posta elettronica del destinatario. Puoi specificare più destinatari separando ogni indirizzo da una virgola (kbd:[,]). Quindi si inserisce il soggetto del messaggio (il subject), seguito dal contenuto del messaggio stesso. La fine del messaggio deve essere specificata da un singolo punto (kbd:[.]) su una nuova linea. [source,shell] .... & mail root@localhost Subject: Ho imparato ad usare mail Ora posso inviare e ricevere posta usando mail ... :) . EOT .... Anche se in `mail`, il comando kbd:[?] può essere usato per invocare l'help in linea, la pagina man man:mail[1] dovrebbe essere consultata per ottenere maggiori informazioni. [NOTE] ==== Come menzionato in precedenza, il comando man:mail[1] non è stato originariamente progettato per gestire gli allegati, e quindi il supporto per essi è proprio misero. Nuovi MUA come mutt gestiscono gli allegati in un modo più intelligente. Tuttavia se desideri comunque usare il comando `mail`, dovresti considerare l'uso del port package:converters/mpack[]. ==== [[mutt-command]] === mutt mutt è un Mail User Agent leggero ma molto potente, con caratteristiche eccellenti, alcune delle quali sono: * Abilità nella gestione di thread di messaggi; * Supporto PGP per la firma digitale e per criptare i messaggi di posta; * Supporto al MIME; * Supporto del formato Maildir; * Altamente personalizzabile. Tutte queste caratteristiche fanno di mutt uno dei maggiori user agent avanzati oggi disponibili. Guarda http://www.mutt.org[http://www.mutt.org] per maggiori informazioni su mutt. La versione stabile di mutt può essere installata usando il port package:mail/mutt[], mentre la versione corrente di sviluppo può essere installata tramite il port package:mail/mutt-devel[]. Una volta che il port è stato installato, mutt può essere avviato usando il seguente comando: [source,shell] .... % mutt .... mutt in modo automatico legge il contenuto della casella di posta dell'utente in [.filename]#/var/mail/# e ne visualizza il contenuto. Se non ci sono messaggi nella casella di posta dell'utente, allora mutt si mette in attesa di comandi da parte dell'utente. L'esempio qui sotto mostra mutt che visualizza una lista di messaggi: image::mutt1.png[] Per leggere un messaggio, selezionalo usando i tasti cursore, e premi il tasto kbd:[Invio]. Segue un esempio di come mutt visualizza un messaggio: image::mutt2.png[] Come con il comando man:mail[1], mutt permette agli utenti di rispondere al solo mittente del messaggio come pure a tutti i suoi destinatari. Per rispondere solo al mittente del messaggio, usa il tasto kbd:[r]. Per inviare una risposta di gruppo, che invierà la risposta sia al mittente originario sia a tutti i destinatari del messaggio, usa il tasto kbd:[g]. [NOTE] ==== mutt si serve del comando man:vi[1] come editor per la creazione o risposta dei messaggi di posta elettronica. Il tipo di editor può essere personalizzato dall'utente creando o editando il proprio file di configurazione [.filename]#.muttrc# nella propria directory home e settando in modo opportuno la variabile `editor` o impostando la variabile di ambiente `EDITOR`. Guarda http://www.mutt.org/[http://www.mutt.org/] per ulteriori informazioni sulla configurazione di mutt. ==== Per comporre un nuovo messaggio, premi il tasto kbd:[m]. Dopo aver digitato un valido soggetto, mutt avvierà man:vi[1] con il quale comporre il corpo del messaggio. Fatto ciò, salvando e uscendo da `vi`, mutt visualizzarà una schermata riassuntiva del messaggio che sta per essere consegnato. Per inviare il messaggio, premi il tasto kbd:[y]. Segue un esempio di una schermata riassuntiva di un messaggio: image::mutt3.png[] mutt contiene un ottimo help in linea, che può essere accessibile nella maggior parte dei menù digitando il tasto kbd:[?]. Inoltre, in alcuni casi, nella parte superiore delle finestra vengono elencati i tasti funzioni principali. [[pine-command]] === pine pine è rivolto agli utenti novizi, tuttavia include alcune caratteristiche avanzate. [WARNING] ==== Il software pine ha avuto svariate vulnerabilità remote scoperte in passato, che permettevano ad attaccanti remoti di eseguire del codice arbitrario come se fossero degli utenti locali del sistema, tramite l'invio di un messaggio di posta preparato ad doc. Tutti questi _noti_ problemi sono stati rattoppati, ma il codice di pine è stato scritto in un modo insicuro e il Servizio di Sicurezza di FreeBSD crede che probabilmente esistono altre vulnerabilità non ancora scoperte o divulgate. Installa pine a tuo rischio e pericolo. ==== L'attuale versione di pine può essere installata usando il port package:mail/pine4[]. Una volta che il port è stato installato, pine può essere avviato con il comando seguente: [source,shell] .... % pine .... La prima volta che pine viene avviato viene visualizza una pagina di presentazione con una breve introduzione, e un sollecito del team di sviluppo di pine ad inviare un messaggio anonimo che permette di constatare quanti sono gli utenti che usano la loro applicazione. Per inviare questo messaggio anonimo, premi kbd:[Invio], oppure premi il tasto kbd:[E] per uscire dalla presentazione senza inviare il messaggio anonimo. Ecco un esempio della pagina di presentazione: image::pine1.png[] All'utente viene quindi presentato il menù principale, che può essere facilmente esplorato con i tasti cursore. Questo menù principale fornisce le scorciatoie per comporre nuovi messaggi di posta, per esplorare le directory di posta e perfino per amministrare l'agenda degli indirizzi. Sotto al menù principale, sono mostrati i tasti funzione utili per realizzare azioni specifiche, attinenti all'attuale contesto d'uso. La directory di default aperta da pine è [.filename]#inbox#. Per visualizzare l'indice dei messaggi, premi il tasto kbd:[I], o seleziona l'opzione [.guimenuitem]#MESSAGE INDEX# come da esempio: image::pine2.png[] L'indice dei messaggi mostra i messaggi nella directory corrente, e può essere esplorato con i tasti cursore. I messaggi selezionati possono essere letti premendo il tasto kbd:[Invio]. image::pine3.png[] Nello screenshot seguente, viene visualizzato un semplice messaggio in pine. I tasti funzione sono visualizzati come riferimento nella parte superiore della finestra. Un esempio di uno di questi tasti funzioni è il tasto kbd:[r], che dice al MUA di rispondere al messaggio attualmente visualizzato. image::pine4.png[] In pine la risposta ad un messaggio viene realizzata con l'editor pico, che è installato di default con pine. L'utility pico permette una semplice esplorazione del messaggio ed è più permissivo con i nuovi utenti rispetto a man:vi[1] o man:mail[1]. Una volta completata la risposta, il messaggio può essere inviato con kbd:[Ctrl+X]. L'applicazione pine chiederà una conferma. image::pine5.png[] pine può essere personalizzato usando l'opzione [.guimenuitem]#SETUP# del menù principale. Consulta http://www.washington.edu/pine/[http://www.washington.edu/pine/] per maggiori informazioni. [[mail-fetchmail]] == Usare fetchmail fetchmail è un client IMAP e POP super attrezzato che da la possibilità agli utenti di scaricare automaticamente la posta da server remoti IMAP e POP e di salvarla nelle proprie caselle di posta locali; in questo modo la posta è più accessibile. fetchmail può essere installato usando il port package:mail/fetchmail[], e offre diverse caratteristiche, alcune delle quali sono: * Supporto dei protocolli POP3, APOP, KPOP, IMAP, ETRN e ODMR. * Capacità di inoltrare la posta usando SMTP, permettendo di filtrare, inoltrare, e usare la funzionalità alias come di consueto. * Può essere eseguito in modalità demone per verificare in modo periodico la presenza di nuovi messaggi. * Può recuperare più caselle di posta e inoltrare i relativi messaggi a diversi utenti locali, a seconda della sua configurazione. Benchè la spiegazione di tutte le caratteristiche di fetchmail vada oltre lo scopo di questo documento, verranno presentate alcune funzionalità di base. fetchmail richiede un file di configurazione [.filename]#.fetchmailrc#, al fine di poter essere avviato in modo corretto. Questo file include informazioni sui server come pure le credenziali per il login. Data la natura sensibile del contenuto di questo file, è consigliabile renderlo accessibile in sola lettura dal proprietario, usando il seguente comando: [source,shell] .... % chmod 600 .fetchmailrc .... La seguente configurazione di [.filename]#.fetchmailrc# serve come esempio per scaricare una singola casella di posta usando POP. Essa indica a fetchmail di connettersi a `example.com` usando come nome utente `joesoap` e come password `XXX`. Questo esempio assume che l'utente `joesoap` è anche un utente del sistema locale. [.programlisting] .... poll example.com protocol pop3 username "joesoap" password "XXX" .... Il prossimo esempio si connette a più server POP e IMAP e redirige i vari messaggi a diversi nomi utenti locali quando necessario: [.programlisting] .... poll example.com proto pop3: user "joesoap", with password "XXX", is "jsoap" here; user "andrea", with password "XXXX"; poll example2.net proto imap: user "john", with password "XXXXX", is "myth" here; .... L'utility fetchmail può essere eseguita in modalità demone con l'opzione `-d`, seguita da un intervallo (in secondi) in base al quale fetchmail sonderà i server elencati nel file [.filename]#.fetchmailrc#. Il seguente esempio indica a fetchmail di sondare i server ogni 600 secondi: [source,shell] .... % fetchmail -d 600 .... Maggiori informazioni su fetchmail possono essere trovate all'indirizzo http://fetchmail.berlios.de/[http://fetchmail.berlios.de/]. [[mail-procmail]] == Usare procmail L'utility procmail è un'applicazione molto potente usata per filtrare la posta in ingresso. Permette agli utenti di definire delle "regole" che sono confrontate con la posta in ingresso per realizzare funzioni specifiche o per inoltrare la posta ad una casella di posta alternativa e/o ad altri indirizzi di posta. procmail può essere installato usando il port package:mail/procmail[]. Una volta installato, può essere integrato direttamente nella maggior parte degli MTA; consulta la documentazione del tuo MTA per maggiori informazioni. Altrimenti, procmail può essere integrato aggiungendo la seguente linea nel file [.filename]#.forward# nella home directory dell'utente, potendo così utilizzare le funzionalità di procmail: [.programlisting] .... "|exec /usr/local/bin/procmail || exit 75" .... La seguente sezione mostra alcune regole base di procmail, così come una breve descrizione di ciò che fanno. Queste ed eventualmente altre regole, devono essere inserite nel file [.filename]#.procmailrc#, posto nella home directory dell'utente. La maggior parte di queste regole possono essere trovate anche nella pagina man di man:procmailex[5]. Per inoltrare la posta inviata da mailto:user@example.com[user@example.com] all'indirizzo di posta mailto:goodmail@example2.com[goodmail@example2.com]: [.programlisting] .... :0 * ^From.*user@example.com ! goodmail@example2.com .... Per inoltrare tutti i messaggi di posta con dimensioni inferiori a 1000 bytes verso l'indirizzo di posta esterno mailto:goodmail@example2.com[goodmail@example2.com]: [.programlisting] .... :0 * < 1000 ! goodmail@example2.com .... Per inoltrare tutta la posta inviata a mailto:alternate@example.com[alternate@example.com] in una casella di posta chiamata [.filename]#alternate#: [.programlisting] .... :0 * ^TOalternate@example.com alternate .... Per inviare tutti messaggi di posta con soggetto "Spam" in [.filename]#/dev/null#: [.programlisting] .... :0 ^Subject:.*Spam /dev/null .... Ecco una ricetta utile che analizza i messaggi di posta in ingresso delle liste di `FreeBSD.org` e li posiziona in base alla lista in una opportuna casella di posta: [.programlisting] .... :0 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG { LISTNAME=${MATCH} :0 * LISTNAME??^\/[^@]+ FreeBSD-${MATCH} } .... diff --git a/documentation/content/ja/books/handbook/mail/_index.adoc b/documentation/content/ja/books/handbook/mail/_index.adoc index 7de83ca260..66a9d6c2ec 100644 --- a/documentation/content/ja/books/handbook/mail/_index.adoc +++ b/documentation/content/ja/books/handbook/mail/_index.adoc @@ -1,811 +1,811 @@ --- title: 第19章 電子メール part: パートIV. ネットワーク通信 prev: books/handbook/ppp-and-slip next: books/handbook/advanced-networking showBookMenu: true weight: 24 path: "/books/handbook/" --- [[mail]] = 電子メール :doctype: book :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: 19 :partnums: :source-highlighter: rouge :experimental: :images-path: books/handbook/mail/ ifdef::env-beastie[] ifdef::backend-html5[] :imagesdir: ../../../../images/{images-path} endif::[] ifndef::book[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] toc::[] endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] toc::[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [[mail-synopsis]] == この章では "電子メール"、email としてのほうが知られているでしょう、 は現代で最も広く利用されているコミュニケーション手段の一つです。 この章では FreeBSD 上でメールサーバを実行するための基本的な導入を説明します。 しかし、この文書は完璧な参考文献ではなく、 実際のところ考慮すべき重要な点の多くが省略されています。 この件について、より網羅したものについては crossref:bibliography[bibliography,参考図書] に掲載されている多くの優れた書籍を参照してください。 この章では、以下の分野について説明します。 * 電子メールの送受信に関係しているソフトウェアの構成要素 * FreeBSD における sendmail の基本的な設定ファイルのある場所 * スパマーがあなたのメールサーバを踏台として不正に使用することを防ぐ方法 * あなたのシステムに sendmail の置き換えとなる代替の MTA をインストールして設定する方法 * メールサーバにまつわる共通の問題の解決法 * UUCP とともに SMTP を使う方法 * ダイアルアップ接続でメールを使う方法 * セキュリティを向上するために SMTP 認証を設定する方法 この章を読む前に、以下のことを理解しておく必要があります。 * ネットワーク接続の適切な設定方法 (crossref:advanced-networking[advanced-networking,高度なネットワーク]) * あなたのメールホストに対する DNS 情報の適切な設定方法 (crossref:advanced-networking[advanced-networking,高度なネットワーク]) * サードパーティ製ソフトウェアのインストール方法 (crossref:ports[ports,アプリケーションのインストール - packages と ports]) [[mail-using]] == 電子メールを使う email の交換には 5 つの主要な部分があります。 それらは <>、 <>、 <>、 <>、 そしてもちろん <>です。 [[mail-mua]] === ユーザープログラム いくつか名前を挙げれば、 mutt, pine, elm そして mail といったコマンドラインプログラムや balsa, xfmail のような GUI プログラム、WWW ブラウザーのようにさらに "洗練された" ものまであります。 これらのプログラムは、email の処理を <> を呼び出したり TCP 経由で渡したり、といった手段でローカルの <> に任せるだけです。 [[mail-mta]] === メールホストサーバデーモン 通常、これは sendmail (FreeBSD のデフォルト) や qmail, postfix もしくは exim といった他のメールサーバーデーモンの一つです。 他にもあるのですが、以上のものが広く使われています。 サーバーデーモンは通常 2 つの機能 - やってくるメールを受け取るのと出ていくメールを配送する、 を持っています。メールを読むために POP や IMAP で接続する、 ということはできません。 そのためにはもう一つ<>が必要なのです。 いくつかの古いバージョンの sendmail には深刻なセキュリティ問題がありますが、 現在のバージョンを使っていれば特に問題ないことに注意してください。 例のごとく、 どんなソフトウェアを利用する時にも最新の状態にしておくのが大事なのです。 [[mail-dns]] === Email と DNS Domain Name System (DNS) とそのデーモンである `named` は email の配送において大変重要な役割を担ってます。 あなたのサイトからもう一つのサイトへメールを配送するためには、 サーバーデーモンは DNS からそのサイトを探し、 メールの受け取り先のホストを決定します。 メールがあなたに送られた場合にも同じような仕組みになっています。 DNS にはホスト名と IP アドレス、ホスト名とメールホストをマッピングするデータベースがあります。 IP アドレスは A レコードで指定されます。 MX (Mail eXchanger) レコードはあなた宛のメールを受け取るホストを指定します。 あなたのホスト名に対する MX レコードがない場合には、 メールは直接あなたのホストに配送されます。 [[mail-receive]] === メールの受け取り メールはメールホストが受け取ります。 このホストは送られてきたメールを集め、 (ユーザーが) 読んだりピックアップしたりするために保存します。 保存されているメールをピックアップするにはメールホストに接続する必要があります。 これは POP や IMAP を用いて行なわれます。 メールホスト上で直接メールを読みたい時は POP や IMAP のサーバーは必要ありません。 POP や IMAP のサーバーを走らせるためには 2 つのことをやらなければいけません。 [.procedure] ==== . POP や IMAP のデーモンを link:https://www.FreeBSD.org/ports/[ports コレクション] からインストールします。 . [.filename]#/etc/inetd.conf# を修正して POP や IMAP のサーバーが起動されるように設定します。 ==== [[mail-host]] === メールホスト メールホストとは責任をもってメールを配送したり、 あなたのホストや、もしかするネットワークも、に宛てたメールを受け取ったりするホストに与えられる名前です。 [[sendmail]] == sendmail の設定 man:sendmail[8] は FreeBSD のデフォルトの メールトランスファエージェント (MTA) です。 sendmail の仕事はメールユーザエージェント (MUA) からのメールを受け取り、 それを設定ファイルで定義された適当なメーラに届けることです。 sendmail はネットワーク接続を受け入れて、 ローカルのメールボックスにメールを届けたり 別のプログラムにメールを渡したりもできます。 sendmail は次の設定ファイルを使用します。 [.informaltable] [cols="1,1", options="header"] |=== | ファイル名 | 機能 |[.filename]#/etc/mail/access# |sendmail アクセスデータベースファイル |[.filename]#/etc/mail/aliases# |メールボックスエイリアス |[.filename]#/etc/mail/local-host-names# |sendmail が受け付ける配送先ホストのリスト |[.filename]#/etc/mail/mailer.conf# |メーラプログラムの設定 |[.filename]#/etc/mail/mailertable# |メーラ配送表 |[.filename]#/etc/mail/sendmail.cf# |sendmail の主設定ファイル |[.filename]#/etc/mail/virtusertable# |仮想ユーザおよび仮想ドメイン表 |=== === [.filename]#/etc/mail/access# アクセスデータベースは、 どのホストまたは IP アドレスがローカルメールサーバに接続できるか、 そして接続の種類は何か、ということを定義します。 ホストは `OK`, `REJECT`, `RELAY` として指定できます。 または、メーラエラーを指定することで、 単に sendmail の エラー処理ルーチンに渡されます。 `OK` として指定されたホスト (これはデフォルトです) は、 メールの最終宛先がローカルマシンである限り、 このホストへメールを送ることを認められます。 `REJECT` として指定されたホストは、 すべてのメール接続を拒絶されます。 ホスト名に対して `RELAY` オプションを指定されたホストは、 このメールサーバを通過して任意の宛先へメールを送ることを認められます。 .sendmail アクセスデータベースの設定 [example] ==== [.programlisting] .... cyberspammer.com 550 We don't accept mail from spammers FREE.STEALTH.MAILER@ 550 We don't accept mail from spammers another.source.of.spam REJECT okay.cyberspammer.com OK 128.32 RELAY .... ==== この例では五つのエントリがあります。 表の左側に当てはまるメール送信者は、表の右側の動作に支配されます。 はじめの二つの例は、エラーコードを sendmail のエラー処理ルーチンに渡します。 メールが表の左側に当てはまると、リモートホストにそのメッセージが表示されます。 次のエントリは `another.source.of.spam` というインターネット上の特定のホストからのメールを拒絶します。 次のエントリは `okay.cyberspammer.com` からのメール接続を受け入れます。 このエントリは上にある `cyberspammer.com` という行よりもさらに厳密です (厳密に一致すればするほど、そうでないものより優先されます)。 最後のエントリは `128.32` から始まる IP アドレスのホストからの電子メールのリレーを認めます。 これらのホストは他のメールサーバに到達できるこのメールサーバを使ってメールを送ることができるでしょう。 このファイルを変更したら、 データベースを更新するために [.filename]##/etc/mail/## ディレクトリで `make` コマンドを実行する必要があります。 === [.filename]#/etc/mail/aliases# エイリアスデータベースには、 他のユーザ、ファイル、プログラムまたは他のエイリアスに展開される 仮想的なメールボックスの一覧が記載されています。 [.filename]#/etc/mail/aliases# において使用できる例をいくつかあげます。 .メールエイリアス [example] ==== [.programlisting] .... root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail" .... ==== ファイル形式はシンプルです。 コロンの左側にあるメールボックス名は、右側のターゲットに展開されます。 はじめの例は単純に `root` のメールボックスを `localuser` のメールボックスに展開し、 それからエイリアスデータベースをもう一度調べます。 一致するエントリがなければメッセージはローカルユーザである `localuser` に配送されます。 次の例はメールリストです。 `ftp-bugs` のメールボックスへのメールは `joe`, `eric` および `paul` の三つのローカルメールボックスに展開されます。 リモートメールボックスは `user@example.com` のように指定できることに注意してください。 次の例はメールをファイル、この場合 [.filename]#/dev/null# に書き込みます。 最後の例はメールをプログラムに送ります。 この場合メールのメッセージは UNIX(R) パイプを通じて [.filename]#/usr/local/bin/procmail# の標準入力に書き込まれます。 このファイルを変更したら、 データベースを更新するために[.filename]##/etc/mail/## ディレクトリで `make` コマンドを実行する必要があります。 === [.filename]#/etc/mail/local-host-names# これは man:sendmail[8] がローカルホスト名として認めるホスト名のリストです。 sendmail がメールを受け取るすべてのドメインやホストにこのファイルを置いてください。 たとえば、このメールサーバは `example.com` というドメインおよび `mail.example.com` というホストへのメールを受け取るとすると、 [.filename]#local-host-names# ファイルの内容は次のようになるでしょう。 [.programlisting] .... example.com mail.example.com .... このファイルを更新したら、変更を読み込むために man:sendmail[8] を再起動する必要があります。 === [.filename]#/etc/mail/sendmail.cf# sendmail の主設定ファイルである [.filename]#sendmail.cf# は、電子メールアドレスの書き換えから、 リモートメールサーバへ拒絶メッセージを送ることまで sendmail の全般的な動作をすべて制御します。 当然、そのようなさまざまな役割によりこの設定ファイルは大変複雑で、 その詳細についてはこの節の少し範囲外です。好運なことに、 標準的な構成のメールサーバではこのファイルをめったに変更する必要はありません。 sendmail の主設定ファイルは sendmail の機能と動作を決定する man:m4[1] マクロから構築できます。 詳細については [.filename]#/usr/src/contrib/sendmail/cf/README# を参照してください。 このファイルを更新したら、その変更を反映するために sendmail を再起動する必要があります。 === [.filename]#/etc/mail/virtusertable# [.filename]#virtusertable# は仮想ドメインおよび仮想メールボックスに対するアドレスを実際のメールボックスと対応づけます。 これらのメールボックスにはローカル、リモート、 [.filename]#/etc/mail/aliases# に定義されたエイリアス、 またはファイルを使用できます。 .仮想ドメインメール対応表の例 [example] ==== [.programlisting] .... root@example.com root postmaster@example.com postmaster@noc.example.net @example.com joe .... ==== 上の例では `example.com` ドメインへの対応づけをしています。 このファイルはファイルの下までファーストマッチ (訳注: 一致するルールが複数ある場合、 一番最初に一致したルールが適用されること) で処理されます。 はじめの行では `root@example.com` を ローカルの `root` メールボックスに対応づけています。 次のエントリでは `postmaster@example.com` を `noc.example.net` ホスト上の `postmaster` メールボックスに対応づけています。 最後に、今までのところでは `example.com` に関して何も一致しない場合、最後のエントリと一致するでしょう。 これは `example.com` の誰かに送ったすべてのメールが一致します。これは `joe` のローカルメールボックスに対応づけられています。 [[mail-changingmta]] == MTA の変更 すでに述べたように、FreeBSD には MTA (Mail Transfer Agent) として、 sendmail がすでにインストールされています。 したがって、デフォルトではこれがメールの送受信を担当しています。 しかしながら、さまざまな理由によって、 システムの MTA を変更しようと考えるシステム管理者もいるかもしれません。 その理由は、単に他の MTA を試してみたいというものから 他のメーラに依存する特定の機能やパッケージが必要だといったものまで、 多岐にわたることでしょう。 幸い、理由がどんなものであれ、FreeBSD では簡単に変更できます。 === 新しい MTA のインストール さまざまな MTA が利用できます。 crossref:ports[ports,FreeBSD Ports Collection] から探しはじめるのがよいでしょう。 もちろん、どんな場所からでも、あなたが利用したい MTA が FreeBSD で動作する限りすべて自由に使えます。 新しい MTA をインストールすることからはじめましょう。 新しい MTA をインストールすると、 あなたの要求が実際に実現したかどうか決める機会が与えられます。さらに、 サービスを sendmail から引き継ぐ前に 新しいソフトウェアを設定する機会が与えられます。これを行う場合、 新しいソフトウェアが [.filename]#/usr/bin/sendmail# のようなシステムバイナリを上書きしようとしないことを確認してください。 そうしないとあなたが設定する前に新しいメールソフトウェアが本格的に動作しはじめてしまいます。 あなたが選択したソフトウェアを設定する方法についての情報は、 その MTA の文書を参照してください。 === sendmail を無効にする sendmail を起動するために使用されていた手続きは、 4.5-RELEASE と 4.6-RELEASE の間で著しく変更されました。 したがって、それを無効にするための手続きは微妙に違います。 ==== 2002 年 4 月 4 日より前の FreeBSD 4.5-STABLE (4.5-RELEASE とそれ以前のバージョンが該当) [.filename]#/etc/rc.conf# に次の行を加えてください。 [.programlisting] .... sendmail_enable="NO" .... これは sendmail のメール受信機能を無効にします。 しかし [.filename]#/etc/mail/mailer.conf# (下記参照) が変更されていなければ、sendmail はメールの送信にまだ使われるでしょう。 ==== 2002 年 4 月 4 日以降の FreeBSD 4.5-STABLE (4.6-RELEASE とそれ以降のバージョンが該当) sendmail を完全に無効にするためには [.filename]#/etc/rc.conf# に次の行を加えなくてはいけません。 [.programlisting] .... sendmail_enable="NONE" .... [WARNING] ==== もしこの方法で sendmail のメール送信機能を無効にしたのなら、 完全に動作する代替メール配送システムと置き換えることが重要です。 さもなければ、man:periodic[8] などのシステム機能は、 それらの結果を通常想定しているようにメールで配送することができなくなるでしょう。 システムの多くの部分が sendmail 互換のシステムがあることを想定しているかもしれません。 もしそれらを無効にした後に、 アプリケーションがメールを送ろうとするために sendmail のバイナリを使用し続ければ、 メールは使われていない sendmail のキューに入り、そして決して配送されないでしょう。 ==== もし sendmail のメール受信機能だけを無効にしたいのなら [.filename]#/etc/rc.conf# に以下の行を追加してください。 [.programlisting] .... sendmail_enable="NO" .... sendmailの起動オプションに関する詳細は man:rc.sendmail[8] マニュアルをご覧ください。 === 起動時に新しい MTA を起動する 起動時に新しい MTA を起動するには二つの選択肢があります。 ここでも、あなたが稼働させている FreeBSD のバージョンに依存します ==== 2002 年 4 月 11 日より前の FreeBSD 4.5-STABLE (4.5-RELEASE とそれ以前のバージョンが該当) [.filename]#/usr/local/etc/rc.d/# ディレクトリに、 ファイル名が [.filename]#.sh# でおわり、 `root` によって実行可能なスクリプトを追加します。 このスクリプトは `start` および `stop` パラメータを引数として受け付けるようにします。 起動時にシステムスクリプトは次のコマンドを実行するでしょう。 [.programlisting] .... /usr/local/etc/rc.d/supermailer.sh start .... これは手動でサーバを起動するためにも使用できます。 システム終了時にはシステムスクリプトは `stop` オプションを使用して、次のコマンドを実行するでしょう。 [.programlisting] .... /usr/local/etc/rc.d/supermailer.sh stop .... これはシステムが稼働している間に手動でサーバを停止するためにも使えます。 ==== 2002 年 4 月 11 日以降の FreeBSD 4.5-STABLE (4.6-RELEASE とそれ以降のバージョンが該当) より新しいバージョンの FreeBSD では、 上記の方法または次の行を [.filename]#/etc/rc.conf# に設定できます。 [.programlisting] .... mta_start_script="filename" .... _filename_ は、あなたが MTA を立ち上げるために起動時に実行するスクリプト名です。 === システムのデフォルトメーラとして sendmail を置き換える sendmail プログラムは UNIX(R) システム上の標準ソフトウェアとして本当にどこでも利用できるので、 これがすでにインストールおよび設定されているとみなしている ソフトウェアもあるかもしれません。 この理由により、代替となる MTA の多くは sendmail コマンドラインインタフェースと 互換性のある実装を提供しています。 これを "差し込む" ことによって、 sendmail の置き換えとして代替 MTA を使用することが容易になります。 したがって、あなたが互換メーラを使用しているときには、 [.filename]#/usr/bin/sendmail# のような標準 sendmail バイナリを実行しようとするソフトウェアが、 実際にはその代わりにあなたの選択したメーラを実行しているということを 確かめる必要があるでしょう。 好運なことに、FreeBSD はこの仕事をする man:mailwrapper[8] と呼ばれるシステムを提供しています。 インストールされたまま sendmail が稼働しているときには [.filename]#/etc/mail/mailer.conf# には以下のような記述があるでしょう。 [.programlisting] .... sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail .... このことは、これらのうちどの共通コマンド ([.filename]#sendmail# 自身のような) が実行されても、 システムは [.filename]#mailer.conf# を確認して、 代わりに [.filename]#/usr/libexec/sendmail/sendmail# を実行する [.filename]#sendmail# という名前の mailwapper のコピーを呼び出すことを意味します。 このようなシステムでは、デフォルトの [.filename]#sendmail# が呼び出されたときに、 どのバイナリが実際に実行されるかを変更するのが簡単になります。 したがって、sendmail の代わりに [.filename]#/usr/local/supermailer/bin/sendmail-compat# を実行させたいのなら、次のように [.filename]#/etc/mail/mailer.conf# を変更してください。 [.programlisting] .... sendmail /usr/local/supermailer/bin/sendmail-compat send-mail /usr/local/supermailer/bin/sendmail-compat mailq /usr/local/supermailer/bin/mailq-compat newaliases /usr/local/supermailer/bin/newaliases-compat hoststat /usr/local/supermailer/bin/hoststat-compat purgestat /usr/local/supermailer/bin/purgestat-compat .... === 完了 あなたのやりたいようにすべてを設定しおえたら、 もはや必要のない sendmail のプロセスを終了して新しいソフトウェアに関するプロセスを起動するか、 単に再起動してください。 再起動することによって、新しい MTA が起動時に正しく立ち上がるように システムが設定されているかどうか確認することもできるでしょう。 [[mail-trouble]] == トラブルシュート === どうして自分のサイトのホストなのに FQDN を使わなければいけないのですか? 恐らく、そのホストは実際には別のドメインにあるのでしょう。 例えば `foo.bar.edu` ドメインにいて、 `bar.edu` というドメイン内の `mumble` というホストにアクセスしたいとします。 この時は単に `mumble` ではなく `mumble.bar.edu` と FQDN で参照しなければなりません。 そもそも、BSD BIND のリゾルバー (resolver) ではこのようなことが可能でしたが、 FreeBSD に入っている最新版の BIND では自分のドメイン以外に対する FQDN でない省略形は許されません。 従ってホストを `mumble` と曖昧に指定した場合は `mumble.foo.bar.edu` という名前があればそれになり、 そうでなければ root ドメインから検索されます。 これは、 `mumble.bar.edu` と `mumble.edu` ということなったドメイン名に対してホスト名のサーチがおこなわれていた以前の振る舞いとは異なったものです。 このような事が悪い例もしくはセキュリティホールとみなされる理由については RFC 1535 を見てください。 [.filename]#/etc/resolv.conf# で [.programlisting] .... domain foo.bar.edu .... と書いてある行を [.programlisting] .... search foo.bar.edu bar.edu .... と書き換えることで上のようなことができます。 しかし、RFC 1535 にあるように検索順序が "内部 (local) と外部 (public) の管理の境界" をまたがないようにしてください。 === sendmail が mail loops back to myself というメッセージを出すのですが。 sendmail FAQ に次のように書いてあります。 [.programlisting] .... Local configuration error というメッセージが出ます。例えば、 553 relay.domain.net config error: mail loops back to myself 554 ... Local configuration error のような感じですが、どうしたら解決できますか? これは、例えば domain.net のようなドメイン宛てのメールを MX レコードで特定のホスト(ここでは relay.domain.net) に送ろうとしたのに、 そのホストでは domain.net 宛てのメールを受け取れるような設定になっていない場合です。 設定の際に FEATURE(use_cw_file) を指定してある場合には /etc/mail/local-host-names の中に domain.net を追加してください。 もしくは、/etc/mail/sendmail.cf の中に Cw domain.net を追加してください。 .... sendmail FAQ は http://www.sendmail.org/faq[http://www.sendmail.org/faq] にありますので、 メールの設定に "おかしなこと" があれば常に読んでください。 -=== ダイアルアップ PPPPPP ホストでメールサーバを実行するにはどうしたらいいの? +=== ダイアルアップ PPP ホストでメールサーバを実行するにはどうしたらいいの? LAN 上にある FreeBSD マシンを、 インターネットに接続したいとします。FreeBSD マシンは、その LAN でのメールゲートウェイになります。FreeBSD マシンは専用線接続ではありません (訳注: ダイアルアップ接続など)。 これには、少なくとも二つの方法があります。 一つは UUCP を使うことです。 もう一つの方法は、あなたのドメインに対するセカンダリ MX サービスを提供する常時稼働のインターネットサーバを用意することです。 たとえば、あなたの会社のドメインが `example.com` で、 ISP があなたのドメインに セカンダリ MX サービスを提供するために `example.net` ドメインを 用意するとしたら次のようにします。 [.programlisting] .... example.com. MX 10 example.com. MX 20 example.net. .... 最終的なメール受信先としては、 一つのホストだけが定義されるべきです (`example.com` 上の [.filename]#/etc/mail/sendmail.cf# ファイルに、 `Cw example.com` を追加します)。 送信側の `sendmail` が、 メールを配送しようとしている時、モデムの接続を介してあなたのところ (`example.com`) に接続しようとします。大抵の場合、 あなたのマシンがオンラインでないために、 接続はタイムアウトしてしまうでしょう。 `sendmail` プログラムは自動的に、 たとえばあなたのインターネットプロバイダなどのセカンダリの MX サイト (`example.net`) にメールを配送するでしょう。 セカンダリ MX サイトは定期的にあなたのホストに接続し、 プライマリ MX ホスト (`example.com`) にメールを配送しようとするでしょう。 ログインスクリプトとして、 このようなものを使うとよいでしょう。 [.programlisting] .... #!/bin/sh # Put me in /usr/local/bin/pppmyisp ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp .... ユーザごとにログインスクリプトを作りたい場合には、 上記のスクリプトの代わりに、 `sendmail -qRexample.com` を使用することもできます。 このようにすると、 キューの中の `example.com` に対するすべてのメールは、すぐに強制的に処理されます。 さらに、次のような改良もできます。 以下は、link:{freebsd-isp} から抜粋してきたメッセージです。 [.programlisting] .... > 私たちはお客様に対して、セカンダリ MX を提供しています。 > お客様は一日に何回か私たちのサービスに接続し、メールを彼らのプライマリ MX > に受け取ります (彼らのドメインに対するメールが到着した時には、 > 私たちは彼らのサイトを呼び出しません)。 > 私たちの sendmail は、30 分ごとにメールキューに溜っているメールを配送します。 > ちょうどその時に、すべてのメールがプライマリ MX に送られたかどうかを確かめるためには、 > 彼らは 30 分は オンラインでいなければなりません。 > > すべてのメールを今すぐ送るために sendmail を初期化するコマンドはあるでしょうか? > もちろん私たちのマシン上には、ユーザはルート (root) 権限を持っていません。 sendmail.cf の privacy flags セクションに、 Opgoaway,restrictqrun の定義があります。 root 以外のユーザがキューを処理できるようにするには、 restrictqrun を削除してください。また、MX の再調整が必要かもしれません。 あなたがたは、顧客のサイトに対する一番優先度の高い MX なので、 次のように定義します。 # If we are the best MX for a host, try directly instead of generating # local config error. OwTrue このようにすると、リモートサイトからのメールが、 顧客のマシンと接続しようとせず、直接あなたがたのホストマシンに配送されるようになります。 ホストマシンに配送されたメールは、続いて顧客のマシンに送られます。 これはホスト名にのみ有効なので、顧客のメールマシンに、 host.customer.com とは別に、customer.com も定義する必要があります。 DNS 上で、customer.com に対する A レコードを定義してください。 .... === なぜ他のホストにメールを送ろうとすると、いつも Relaying Denied と怒られてしまうの ? FreeBSD がインストールされたデフォルトの状態では、 sendmail は動作しているホストからのメールだけを送るように設定されています。 たとえば POP3 サーバがインストールされているとすると、 ユーザは学校や職場など他のリモートの場所からメールを確認することが できます。しかし、彼らは外部からそのホスト以外へのメールを 送ることはやはりできません。 通常、メールを送ろうとしてから少しすると、 `5.7 Relaying Denied` というエラーメッセージの書かれたメールが MAILER-DAEMON から送られてくるでしょう。 これを解決する方法はいくつかあります。 一番の正攻法は [.filename]#/etc/mail/relay-domains# リレードメインファイルにあなたの ISP のアドレスを書くことです。 これをするのに簡単な方法は次のとおりです。 [source,shell] .... # echo "your.isp.example.com" > /etc/mail/relay-domains .... このファイルを作成または編集したら、 sendmail を再起動してください。 もしあなたがサーバ管理者でメールをローカルに送りたくないか、 ポイントを使用して他のマシン (や、さらに他の ISP) の クライアントまたはシステムへ送りたい時は、とても効果があります。 さらに、あなたが一つあるいは二つだけのメールアカウントを 設定している場合でもこれは非常に有用です。 追加すべきアドレスがたくさんある場合には、 単にこのファイルをあなたの好きなテキストエディタで開いて、 そして一行に一つずつドメインを追加してください。 [.programlisting] .... your.isp.example.com other.isp.example.net users-isp.example.org www.example.org .... これで、リストに掲載されているすべてのホスト (ユーザがあなたのシステムにアカウントを持っていると規定する) からあなたのシステムを通るすべてのメールは送信に成功するでしょう。 これはあなたのシステムから SPAM を送ることを認めることなく、 リモートであなたのシステムからメールを送ることをユーザに 認めるためのとてもよい方法です。 [[mail-advanced]] == 先進的なトピックス これからのセクションでは、 メールの設定やドメイン全体のためのメールの設定といったさらに突込んだ話題について触れます。 [[mail-config]] === 基本事項 あなたのマシンに FreeBSD を普通にインストールして、 [.filename]#/etc/resolv.conf# ファイルを設定するか、 またはネームサーバを走らせれば、 他のホストへ電子メールを送ることができるようになります。 あなたのホスト宛のメールをあなた自身の FreeBSD ホスト上の MTA (たとえば sendmail) に配送するようにしたい場合には、次の二つの方法があります。 * 自身でネームサーバーを実行し、 自分のドメインを持つ。例えば `FreeBSD.org`。 * あなたのホストへ直接メールが配送されるようにする。 これはメールがあなたのマシンの現在の DNS 名に直接配送されるようにすることにより実現できます。 たとえば `example.FreeBSD.org`。 上のどちらを選ぶ場合でも、自分のホストに直接メールが配送されるようにするには恒久的で 静的 な IP アドレス (ほとんどの PPP ダイアルアップ設定で用いられる動的なアドレスではなく) を持っていなければなりません。 もしファイアウォールの中にいるならば、 SMTP トラフィックが通過してくれないといけません。 もし自分のホストでメールを直接受け取りたいならば、 次の二つのうちのどちらかができていることを確認してください。 * 自分のドメインでの (一番値の小さい) MX レコードが自分のホストの IP アドレスを差していることを確認する。 * 自分のドメインの中に自分のホスト用の MX エントリがないことを確認する。 上のどちらかが設定されていれば、 自分のホストでメールを受け取ることができるでしょう。 次のコマンドを実行してみてください。 [source,shell] .... # hostname example.FreeBSD.org # host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX .... もしあなたのマシンが上記のメッセージだけを出力したならば、 mailto:yourlogin@example.FreeBSD.org[yourlogin@example.FreeBSD.org] へのメールは問題なく配送されるでしょう (sendmail が `example.FreeBSD.org` 上で正しく動作していると仮定します)。 上記のメッセージの代わりに、 [source,shell] .... # host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org .... というメッセージが出力された場合は、 あなたのホスト (`example.FreeBSD.org`) に宛てたメールは全て直接配送されずに `hub` 上の同じユーザー名に配送されます。 上の情報は DNS サーバーが扱います。 メールルーティング情報をもつ DNS レコードは、 __M__ail e__X__change エントリーです。 MX エントリが存在しない場合には、IP アドレスにしたがって、 直接宛先ホストに配送されます。 `freefall.FreeBSD.org` の現時点での MX エントリは、次のようになっています。 [.programlisting] .... freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com .... `freefall` は多くの MX エントリを持っています。 一番 MX の値の小さいホストが利用可能な場合は直接メールを受け取ります。 もしなにかの理由でアクセスができない時には、 他のホスト (ときどき "バックアップ MX" と呼ばれます) が一時的にメールを受け取ります。そして、 より値の小さいホストが利用可能になったときにメールを渡し、 最終的に一番値の小さいホストに渡ります。 使い勝手をよくするためには、代替の MX サイトは、それぞれ 別の経路でインターネットへ接続しているとよいでしょう。 インターネットプロバイダまたは他の関連サイトが、このサービスを 提供することができます。 [[mail-domain]] === あなたのドメインに対するメール設定 "メールホスト" (メールサーバーとしても知られています) をセットアップするためには、 いろいろなワークステーションに宛てた全てのメールを受ける必要があります。 基本的には、あなたのドメイン内 (この場合だと `*.FreeBSD.org`) のすべてのホスト名宛てのすべてのメールを "受け取って"、 そのメールをあなたのメールサーバーに配送し、 ユーザーがマスタメールサーバ上でメールをチェックできるようにします。 話を簡単にするために、あるユーザーのアカウントはどのマシンでも同じ__ユーザー名__にすべきです。 そのためには man:adduser[8] を使ってください。 使用する予定のメールホストは、 各ワークステーションごとにメール交換が できるように設定されていなければなりません。 これは DNS の設定で次のように行なうことができます。 [.programlisting] .... example.FreeBSD.org A 204.216.27.XX ; ワークステーション MX 10 hub.FreeBSD.org ; メールホスト .... これは、ワークステーションの A レコードがどこを指していようとも そのワークステーション宛てのメールをメールホストに転送する、というものです。 自前で DNS サーバを運用しているのでなければ、 この作業は自分では行えません。自分で DNS サーバを運用しないとかできないという場合は、 あなたの DNS を提供しているインターネットプロバイダなどに依頼して 作業を行ってもらってください。 もしバーチャル電子メールホストを運用するなら次の情報が役に立つでしょう。 例として、あなたには自分のドメイン、ここでは `customer1.org`、 を持っている顧客がいるとしましょう。 あなたは `customer1.org` 宛ての全てのメールを `mail.myhost.com` というメールホストに集めたいとします。 DNS エントリーは次のようになるでしょう。 [.programlisting] .... customer1.org MX 10 mail.myhost.com .... `customer1.org` に対して電子メールを送りたいだけなら、 A レコードは必要__ありません__。 [NOTE] ==== `customer1.org` に対して ping を実行しても、 A レコードが存在しない限りうまくいかないことに留意しておいてください。 ==== やらなければいけない最後のことは、 メールホスト上の sendmail に対してどんなドメインやホスト宛のメールを受け取るのか、 を教えることです。いくつかの方法がありますが次のどちらかでいいでしょう。 * `FEATURE(use_cw_file)` を使っているなら、 [.filename]#/etc/mail/local-host-names# ファイルにホストを加えます。 もし sendmail のバージョンが 8.10 より前であれば該当ファイルは [.filename]#/etc/sendmail.cw# です。 * [.filename]#/etc/sendmail.cf# もしくは sendmail 8.10 以降なら [.filename]#/etc/mail/sendmail.cf# といったファイルに `Cwyour.host.com` という行を加えます。 [[SMTP-UUCP]] == UUCP とともに SMTP を使う FreeBSD とともに出荷されている sendmail の設定は、 サイトがインターネットに直接接続しているものとして設計されています。 UUCP 経由でメールを交換したいサイトは、 他の sendmail 設定ファイルをインストールしなければいけません。 [.filename]#/etc/mail/sendmail.cf# を手動で調整することは先進的なトピックです。 sendmail のバージョン 8 は設定ファイルを man:m4[1] プリプロセッサから生成します。 これにより、高度に抽象化された設定を行うことができます。 man:m4[1] による設定ファイルは [.filename]#/usr/src/usr.sbin/sendmail/cf# 以下にあります。 もしシステムをすべてのソースとともにインストールしていなければ、 sendmail の設定材料は分割された個別のソース tarball を取得してください。 FreeBSD のソースコードが入った CDROM をマウントしているのなら、 [source,shell] .... # cd /cdrom/src # cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail .... と展開してください (展開してもたった数百 KB 程度です)。 [.filename]#cf# ディレクトリの [.filename]#README# ファイルは man:m4[1] による設定の基本的な手引として役に立つでしょう。 UUCP 配送に対応するための一番よい方法は `mailertable` 機能を使用することです。 これは経路を決定するために sendmail が使用できるデータベースを作成します。 まずはじめに [.filename]#.mc# ファイルを作成しなければいけません。 [.filename]#/usr/src/usr.sbin/sendmail/cf/cf# にいくつか例があります。[.filename]#foo.mc# という名前のファイルをあなたが作成したとすると、 有効な [.filename]#sendmail.cf# ファイルへ変換するには次のようにするだけです。 [source,shell] .... # cd /usr/src/usr.sbin/sendmail/cf/cf # make foo.cf # cp foo.cf /etc/mail/sendmail.cf .... 典型的な [.filename]#.mc# ファイルは次のようになるでしょう。 [.programlisting] .... VERSIONID(`Your version number') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', your.uucp.relay) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw your.alias.host.name Cw youruucpnodename.UUCP .... `accept_unresolvable_domains`, `nocanonify` および `confDONT_PROBE_INTERFACES` 機能を含んでいる行は、 メール配送時にまったく DNS を使用しません。 `UUCP_RELAY` の記述は UUCP 配送に対応するのに必要です。 そこにインターネットホスト名を単に書くだけで .UUCP pseudo ドメインアドレスを扱うことができるようになります。 大抵の場合、あなたの ISP のメールリレーをそこに入力するでしょう。 次に、 [.filename]#/etc/mail/mailertable# が必要になります。 メールを配送するリンクが外界との間に一つだけの場合は、 次のようにファイルを記述するだけで十分でしょう。 [.programlisting] .... # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:your.uucp.relay .... 次はさらに複雑な例です。 [.programlisting] .... # # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom: .... はじめの三行はドメインで宛先を指定されたメールが、 配送路を "近道" するために、 デフォルトルートではなく代わりにいくつかの UUCP 隣接ホストへ送られる特別な場合を扱います。 次の行はメールを SMTP で配送可能なローカルイーサネットドメインへ送ります。 最後に `uucp-neighbor !recipient` がデフォルトルートを上書きすることを許可するための UUCP 隣接ホストは .UUCP 仮想ドメイン記法で言及されます。 最後の行は常に他のすべてが当てはまるシングルドットです。 これは UUCP 隣接ホストへの UUCP 配送をすることで、 世界に向けたあなたの普遍的メールゲートウェイとして役に立ちます。 `uucp-dom:` キーワードの後ろにあるノード名はすべて、 `uuname` コマンドを使用することで確かめられる正しい UUCP 隣接ホストである必要があります。 このファイルは、実際に使用する前に DBM データベース形式に変換する必要があることに注意してください。 これを実行するコマンドラインは [.filename]#mailertable# ファイルの先頭にコメントとして書かれています。 [.filename]#mailertable# を変更するたびにいつもこのコマンドを実行する必要があります。 最後のアドバイス: もし、 いくつかのメールルーティングがうまく動いているかどうか分からないときは sendmail に `-bt` オプションをつけることを覚えておいてください。 これは sendmail を _アドレステストモード_ で起動します。 あなたがテストしたいメールルーティングのアドレスを後につけて、 単純に `3,0` と入力してください。 最後の行は、内部で使われたメールエージェント、 このエージェントが呼び出された目的地ホスト、および (もしかしたら変換された) アドレスを表示します。 このモードを終了するには kbd:[Ctrl+D] を入力します。 [source,shell] .... % sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter
> 3,0 foo@example.com canonify input: foo @ example . com ... parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . > > ^D .... [[SMTP-dialup]] == ダイアルアップ接続でメールを使う あなたが固定 IP アドレスを持っているのなら、 デフォルトから何も変更する必要はありません。 割りあてられたインターネット名をホスト名に設定すれば、 sendmail が残りをやってくれます。 あなたが動的に割り当てられた IP アドレスを持っていて、 インターネットに接続するのにダイアルアップ PPP を使用しているのなら、 おそらく ISP のメールサーバにメールボックスがあるでしょう。 ここでは、あなたの ISP のドメインが `example.net`, あなたのユーザ名が `user`, あなたのマシンは `bsd.home` と呼ばれているものとします。 また、ISP から、メールリレーとして `relay.example.net` を使用してよいと通知されているとします。 (訳注: ISP 上の) メールボックスからメールを取得するためには、 取得アプリケーションをインストールしないといけません。 fetchmail ユーティリティは、 さまざまなプロトコルの多くに対応しているのでよい選択肢です。 通常、あなたの ISP は POP3 を提供しています。 このプログラムは、package:mail/fetchmail[] package または Ports Collection からインストールできます。 あなたが ユーザ PPP を使用しているなら、次のエントリを [.filename]#/etc/ppp/ppp.linkup# に追加することで、 インターネット接続が確立したときに自動的にメールを取得することができます。 [.programlisting] .... MYADDR: !bg su user -c fetchmail .... あなたがローカルではないアカウントへのメールを配送するために (下記のような) sendmail を使用しているなら、 インターネット接続が確立するとすぐに、 sendmail があなたのメールキューを処理して欲しいとおそらく考えるでしょう。 これを行うには、[.filename]#/etc/ppp/ppp.linkup# ファイルの `fetchmail` コマンドの後に次のコマンドを追加してください。 [.programlisting] .... !bg su user -c "sendmail -q" .... `bsd.home` 上に `user` というアカウントを所有しているとします。 `bsd.home` 上の `user` のホームディレクトリに [.filename]#.fetchmailrc# ファイルを作成します。 [.programlisting] .... poll example.net protocol pop3 fetchall pass MySecret .... このファイルはパスワード `MySecret` を含んでいるので、`user` を除く他の誰にも読めるようになっていてはいけません。 正しい `from:` ヘッダでメールを送るためには、 sendmail が `user@bsd.home` ではなく `user@example.net` を使用するようにしなくてはいけません。 また、素早くメール送信をするために sendmail にすべてのメールを `relay.example.net` 経由で送るようにもしたいかもしれません。 次の [.filename]#.mc# ファイルで十分でしょう。 [.programlisting] .... VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`example.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.example.net') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl .... [.filename]#.mc# ファイルを [.filename]#sendmail.cf# ファイルに変換する方法の詳細については前の節を参照してください。 また、[.filename]#sendmail.cf# ファイルを変更した後は、 sendmail を再起動し忘れないでください。 [[SMTP-Auth]] == SMTP 認証 メールサーバ上で SMTP 認証を行うと、 多くの利益があります。 SMTP 認証は sendmail にもう一つのセキュリティ層を追加することができます。 さらに、ホストを切りかえるモバイルユーザにとっては、 その都度メールクライアントの設定を変更せずとも 同じメールサーバを利用できるようになります。 [.procedure] ==== . ports から package:security/cyrus-sasl[] をインストールします。 この port は package:security/cyrus-sasl[] にあります。 package:security/cyrus-sasl[] にはここで使用する方法に対する多くのコンパイルオプションがあり、 確実に `pwcheck` オプションを選択してください。 . package:security/cyrus-sasl[] をインストールした後に [.filename]#/usr/local/lib/sasl/Sendmail.conf# を編集して (もし無ければ作成して) 次の行を追加してください。 + [.programlisting] .... pwcheck_method: passwd .... + この方法は sendmail があなたの FreeBSD の [.filename]#passwd# データベースに対して認証することを可能にします。 この方法は SMTP 認証に必要となる、 それぞれのユーザに対する一組の新しいユーザ名とパスワードを 作成する際のトラブルを減らし、 ログインパスワードとメールパスワードを同じままにします。 . ここで [.filename]#/etc/make.conf# 編集し、 次の行を加えます。 + [.programlisting] .... SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl .... + これらの行は sendmail に対して、 コンパイルするときに package:cyrus-sasl[] とリンクするための適切な設定オプションを与えるものです。 sendmail を再コンパイルする前に package:cyrus-sasl[] がインストールされていることを確かめてください。 . 次のコマンドを入力して sendmail を再コンパイルしてください。 + [source,shell] .... # cd /usr/src/usr.sbin/sendmail # make cleandir # make obj # make # make install .... + sendmail のコンパイルは [.filename]#/usr/src# が大幅に変更されていなくて、 必要な共有ライブラリが利用可能であれば何の問題も起こらないでしょう。 . sendmail をコンパイルして再インストールした後は、 [.filename]#/etc/mail/freebsd.mc# ファイル (またはあなたが [.filename]#.mc# ファイルとして使用しているファイル。 多くの管理者は唯一の名前を用いるために man:hostname[1] の出力を [.filename]#.mc# として使用することを選んでいます) を編集してください。 次の行を加えてください。 + [.programlisting] .... dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnl .... + これらのオプションは、ユーザを認証するために sendmail が利用可能な異なる方法を設定します。 もし pwcheck 以外の方法を使用したいのならドキュメントを参照してください。 . 最後に [.filename]#/etc/mail# で man:make[1] を実行してください。 これにより、新しい [.filename]#.mc# ファイルから [.filename]#freebsd.cf# という名前 (またはあなたの [.filename]#.mc# に使用している名前) の [.filename]#.cf# ファイルが作成されます。 それから `make install restart` コマンドを実行してください。 新しい [.filename]#.cf# ファイルが [.filename]#sendmail.cf# にコピーされ、 sendmail が適切に再起動されるでしょう。 この手続きについての詳細は [.filename]##/etc/mail/Makefile##を参照してください。 ==== すべてがうまくいけば、ログイン情報をメールクライアントに入力し、 テストメッセージを送ることができるでしょう。 より詳細に調べるには sendmail の `LogLevel` を 13 に設定し、 すべてのエラーについて [.filename]#/var/log/maillog# を見てください。 このサービスがシステムを起動した後にいつでも利用可能となるように、 [.filename]#/etc/rc.conf# に次の行を追加しておくとよいでしょう。 [.programlisting] .... sasl_pwcheck_enable="YES" sasl_pwcheck_program="/usr/local/sbin/pwcheck" .... これにより、システムの起動時に SMTP_AUTH が確実に初期化されるでしょう。 詳細については http://www.sendmail.org/~ca/email/auth.html[ SMTP 認証] に関する sendmail の文書を参照してください。