---
title: Бүлэг 29. Цахим Шуудан
part: хэсэг IV. Сүлжээний Холболт
prev: books/handbook/ppp-and-slip
next: books/handbook/network-servers
---

[[mail]]
= Цахим Шуудан
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:skip-front-matter:
:toc-title: Гарчиг
:table-caption: Хүснэгт
:figure-caption: Зураг
:example-caption: Жишээ
:xrefstyle: basic
:relfileprefix: ../
:outfilesuffix:
:sectnumoffset: 29

ifeval::["{backend}" == "html5"]
:imagesdir: ../../../../images/books/handbook/mail/
endif::[]

ifeval::["{backend}" == "pdf"]
:imagesdir: ../../../../static/images/books/handbook/mail/
endif::[]

ifeval::["{backend}" == "epub3"]
:imagesdir: ../../../../static/images/books/handbook/mail/
endif::[]

include::shared/authors.adoc[]
include::shared/releases.adoc[]
include::shared/mn/mailing-lists.adoc[]
include::shared/mn/teams.adoc[]
include::shared/mn/urls.adoc[]

toc::[]

[[mail-synopsis]]
== Ерөнхий Агуулга

"Цахим Захидал" буюу имэйл гэж нийтэд илүүтэй танигдсан энэ зүйл нь өнөө үед хамгийн өргөн хэрэглэгдэх болсон харилцааны хэлбэр юм. Энэ бүлэгт FreeBSD дээр захидлын серверийг зохион байгуулах анхан шатны танилцуулга болон FreeBSD ашиглан цахим захидал илгээх болон хүлээн авах талаар үзэх болно; гэвч, энэ нь бүрэн хэмжээний танилцуулга болж чадахгүй бөгөөд олон чухал зүйлсийг оруулаагүй болно. Энэ сэдвээр бүрэн дүүрэн мэдээлэл авахыг хүсвэл, crossref:bibliography[bibliography,Ном зүй] хэсэгт байгаа номнуудын жагсаалтыг үзнэ үү.

Энэ бүлгийг уншсаны дараа та дараах зүйлсийг мэдэж авах болно:

* Цахим захидал хүлээн авах болон илгээхэд ямар програмууд оролцдог талаар
* sendmail-н үндсэн тохиргооны файлууд FreeBSD дээр хаана байрладаг талаар
* Алсын болон дотоодын захидлын хайрцгуудын ялгаа
* Спам тараагчдыг өөрийн серверийг хууль бусаар дамжуулагч (relay) болгон ашиглахаас хэрхэн сэргийлэх талаар
* sendmail-н оронд өөр Захидал Дамжуулах Агентийг хэрхэн суулгаж тохируулах талаар
* Захидлын сервертэй холбоотой түгээмэл тохиолддог асуудлуудыг хэрхэн шийдвэрлэх талаар
* SMTP-г UUCP-тэй хэрхэн ашиглах
* Системийг хэрхэн зөвхөн захидал илгээдэг болгож тохируулах талаар
* Утасны үзүүр ашигласан холболтоор захидлыг хэрхэн хэрэглэх талаар
* Аюулгүй байдлыг нэмэгдүүлэхийн тулд SMTP Магадлалтыг хэрхэн нэмэх талаар
* mutt гэх мэт Хэрэглэгчийн Захидлын Агентийг хэрхэн суулгаж тохируулах талаар
* Өөрт ирсэн захидлыг алсын POP эсвэл IMAP серверээс хэрхэн татаж авах талаар
* Гаднаас ирэх захидлыг хэрхэн автоматаар шүүлтүүр болон дүрмүүдээр шалгах талаар

Энэ бүлгийг уншихын өмнө та дараах шаардлагыг хангасан байх ёстой:

* Сүлжээний холболтоо зөв гүйцэтгэсэн байх (crossref:advanced-networking[advanced-networking,Сүлжээний нэмэлт ойлголтууд]).
* Захидлын хост дээрээ DNS мэдээллийг зөв оруулж өгсөн байх (crossref:network-servers[network-servers,Сүлжээний орчны Серверүүд]).
* Гуравдагч этгээдийн програмыг хэрхэн суулгах талаар мэдлэгтэй байх (crossref:ports[ports,Програм суулгах. Багцууд болон портууд]).

[[mail-using]]
== Цахим Захидлыг Хэрэглэх нь

Цахим захидал солилцоход дараах үндсэн таван бүрэлдэхүүн оролцоно. Үүнд: <<mail-mua,хэрэглэгчийн програм>>, <<mail-mta,сервер дэмон>>, <<mail-dns,DNS>>, <<mail-receive,алсын эсвэл дотоод захидлын хайрцаг>> ба мэдээж <<mail-host,захидлын хост өөрөө>> юм.

[[mail-mua]]
=== Хэрэглэгчийн Програм

Захаас нь эхлээд дурдвал эдгээрт mutt, alpine, elm, `mail` зэрэг тушаалын мөрний програмууд, мөн balsa, xfmail зэрэг GUI програмууд, дээр нь WWW хөтөч зэрэг илүү "нарийн төвөгтэй" програмууд ч орно. Дээрх програмууд нь цахим захидлын гүйлгээг дотоод <<mail-host,"захидлын хост">>-од <<mail-mta,сервер демонуудын>> аль нэгийг дуудан шилжүүлэн өгөх, эсвэл TCP-р дамжуулан очих газар нь хүргэх ажлыг гүйцэтгэдэг.

[[mail-mta]]
=== Захидлын Хостын Сервер Демон

FreeBSD нь анхдагч байдлаар sendmail-г агуулсан байдаг, гэхдээ бусад олон захидлын серверийн дэмонг дэмждэг. Үүнээс заримыг дурдвал:

* exim;
* postfix;
* qmail.

Сервер дэмон ихэвчлэн хоёр үүрэг гүйцэтгэнэ-гаднаас ирж байгаа захидлыг хүлээн авах болон гадагшаа явж байгаа захидлыг очих газар нь хүргэх үүрэгтэй. Сервер дэмон нь захидлаа уншихын тулд POP эсвэл IMAP зэрэг протоколыг ашиглан захидлыг цуглуулж авах, эсвэл дотоод [.filename]#mbox# эсвэл Maildir захидлын хайрцгууд руу холбогдох зэргийн аль алиных нь үүргийг хүлээдэг__гүй__. Үүний тулд нэмэлт <<mail-receive,дэмон>> шаардлагатай.

[WARNING]
====

sendmail-н хуучин хувилбаруудад халдагч таны машины дотоод болон алсын хандалтыг гартаа оруулж болох аюулгүй байдлын хувьд хүндхэн асуудлууд гарч байсан. Иймэрхүү асуудал гарахаас сэргийлж хамгийн сүүлийн хувилбарыг ашиглаж байгаа эсэхээ нягтлах шаардлагатай. Нэмэлт сонголт байдлаар, өөр MTA-г crossref:ports[ports,FreeBSD Портуудын Цуглуулга]ас суулгаарай.
====

[[mail-dns]]
=== Цахим Захидал ба DNS

Домэйн Нэрийн Систем (DNS) ба түүний дэмон `named` нь цахим захидлыг хүргэх ажилд чухал үүрэг гүйцэтгэдэг. Танай байгаа газраас өөр тийш захидал хүргэхийн тулд, сервер дэмон очих газрын хаягийг өөрөөр хэлбэл захидал хүлээж авах хостыг DNS-с асууна. Энэ үйл явц нөгөө талаас танд захидал явуулахад мөн давтагдана.

DNS нь хост нэрийг IP хаягт буулгах үүрэгтэйгээс гадна, MX бичлэгүүд гэгддэг захидал хүргэхтэй холбоотой тусгай мэдээллийг агуулж байдаг. MX (Mail eXchanger буюу Захидал Солилцогч) бичлэг нь ямар хост, эсвэл хостууд, тухайн домэйны хаяглагдсан захидлыг хүлээж авах ёстойг заана. Хэрэв тухайн домэйны хувьд MX бичлэг байхгүй бол, захидлуудыг тухайн домэйноор нэрлэгдсэн хостын A бичлэгт харгалзах хост руу шууд дамжуулна.

Ямар ч домэйны хувьд MX бичлэгүүдийг man:host[1] тушаалыг ашиглан үзэж болно. Жишээг дор үзүүлэв:

[source,bash]
....
% host -t mx FreeBSD.org
FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org
....

[[mail-receive]]
=== Захидал хүлээн авах нь

Захидал хүлээж авах ажлыг захидлын хост гүйцэтгэнэ. Энэ хост таны домэйнд хаяглагдсан бүх захидлыг хүлээж авах ба түүнийг таны тохиргооноос хамаарч эсвэл [.filename]#mbox# (захидал хадгалах анхдагч арга зам) эсвэл Maildir хэлбэрээр хадгална. Захидлыг хадгалсан л бол, түүнийг дотоодоос man:mail[1] эсвэл mutt зэрэг програмыг ашиглан уншиж болно. Эсвэл алсаас хандан, POP эсвэл IMAP зэрэг протоколыг ашиглан цуглуулж авсны дараа уншиж болно. Энэ нь хэрэв та захидлаа зөвхөн дотоодоос шалгах хүсэлтэй байгаа бол, 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 дэмонг портуудын цуглуулгаас суулгах.
. Шаардлагатай бол, POP эсвэл IMAP серверийг ачаалахын тулд [.filename]#/etc/inetd.conf# файлыг засварлах.
====

[WARNING]
====

POP ба IMAP хоёул хэрэглэгчийн нэр, нэвтрэх үг зэрэг чухал мэдээллийг цэвэр текст чигээр нь дамжуулдаг болохыг энд тэмдэглэх хэрэгтэй болов уу. Энэ нь эдгээр протоколоор мэдээлэл дамжуулалтыг аюулгүй болгоё гэвэл сессүүдээ man:ssh[1] хонгилоор эсвэл SSL ашиглан дамжуулах хэрэгтэй гэсэн үг юм. Сессүүдийг хонгилоор дамжуулах талаар crossref:security[security-ssh-tunneling,SSH туннель хийх] хэсэгт болон SSL-ийн талаар crossref:security[openssl,OpenSSL] хэсэгт тайлбарласан байгаа.
====

[[local]]
==== Дотоод захидлын хайрцгуудад хандах нь

Захидлын хайрцаг байрлаж байгаа сервер дээрх MUA-уудын тусламжтай захидлын хайрцгуудад дотоодоос нь шууд хандаж болно. Үүний тулд mutt эсвэл man:mail[1] зэрэг програмуудыг ашиглана. 

[[mail-host]]
=== Захидлын хост

Захидлын хост гэж таны хост, магадгүй таны сүлжээнд хаяглагдсан захидлыг хүлээн авах, илгээх үүргийг гүйцэтгэж байгаа серверийг нэрлэнэ.

[[sendmail]]
== sendmail-г Тохируулах нь

FreeBSD-н хувьд man:sendmail[8] бол анхдагч Mail Transfer Agent буюу Захидал Дамжуулах Агент(MTA) юм. sendmail-н үүрэг бол Mail User Agent буюу Хэрэглэгчийн Захидлын Агент(MUA)-с захидал хүлээн авч, тохиргооны файлд хэрхэн зааж өгснөөс хамааран зохих захидал түгээгчид дамжуулна. sendmail нь мөн сүлжээний холболтуудыг хүлээн авч, захидлыг дотоод захидлын хайрцагт эсвэл өөр програмд дамжуулах чадвартай.

sendmail дараах тохиргооны файлуудыг ашигладаг:

[.informaltable]
[cols="1,1", frame="none", 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 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-н алдаа зохицуулах дэгд алдааны мэдээллийг өгөх болно. Хүснэгтийн зүүн баганад байгаа утгатай захидал дүйсэн тохиолдолд алсын хостод энэ мэдээллийг өгөх болно. Дараагийн жишээн дээр, `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` гэсэн гурван дотоод хэрэглэгчдэд задлах болно. Алсын захидлын хайрцгийг mailto:user@example.com[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` домэйны хувь дахь буулгалтыг үзүүлсэн байна. Энэ файлыг дээрээс нь доош нь, эхний таарсныг авах байдлаар боловсруулна. Эхний мөрөнд mailto:root@example.com[root@example.com]-г `root` гэсэн дотоод захидлын хайрцагт буулгаж байна. Дараагийн мөрөнд mailto:postmaster@example.com[postmaster@example.com]-г `noc.example.net` хост дээр байгаа `postmaster` захидлын хайрцагт буулгаж байна. Эцэст нь, хэрэв `example.com`-той хаяг дээр дурдсаны алинд ч тохироогүй бол, хамгийн сүүлийн мөрөнд тохирох болно. Энэ мөрөнд `example.com` домэйнтой бүх захидлын хаяг тохирох бөгөөд бүгд `joe` гэсэн дотоод захидлын хайрцагт буулгагдах болно.

[[mail-changingmta]]
== Өөрийн Захидал Дамжуулах Агентийг Солих нь

Урьд нь дурдсан шиг, FreeBSD дотор sendmail нь MTA (Mail Transfer Agent буюу Захидал Дамжуулах Агент) байдлаар аль хэдийн суучихсан ирдэг. Тиймээс анхдагч байдлаар, таны явуулж байгаа болон ирж байгаа захидлыг хариуцан ажиллаж байгаа.

Гэвч янз бүрийн шалтгаанаар зарим системийн администраторууд системийнхээ MTA-г солих хүсэлтэй байдаг. Шалтгаан нь өөр MTA-г хэрэглэж үзэх хүсэлдээ хөтлөгдсөнөөс, эсвэл бусад захидал дамжуулагчдаас улбаалсан тусгай чадвар эсвэл багц шаардлагатай болох зэрэг янз бүр байдаг. Баярлууштай нь, ямар ч шалтгаантай байсан гэсэн FreeBSD нь өөрчлөлт хийхэд амархан байх боломжийг олгодог.

=== Шинэ MTA суулгах нь

Танд олон төрлийн MTA-н сонголт байна. Өргөн сонголттой crossref:ports[ports,FreeBSD Портуудын Цуглуулга]ас эхлэх нь хамгийн зөв эхлэл болно. Мэдээж FreeBSD дээр ажиллуулж чадаж л байвал, та хүссэн газраасаа хүссэн MTA-аа суулгах эрхтэй.

Эхлээд шинэ MTA-аа суулгаж эхлэх хэрэгтэй. Нэгэнт суулгасны дараа, шинэ програм таны хэрэгцээг үнэхээр хангаж чадаж байна уу гэдгийг шалгах, sendmail-г бүрэн солихоос өмнө шинэ програмын тохиргоог хийх боломжтой. Ингэх явцад таны суулгаж байгаа шинэ програм [.filename]#/usr/bin/sendmail# зэрэг системийн хоёртын файлуудыг дарж бичихгүй байхыг анхаарч байх хэрэгтэй. Үгүй бол, таныг тохиргоо хийхээс чинь өмнө захидлын шинэ програм чинь ажиллаж эхлэх болно.

Сонгож авсан MTA програмынхаа тохиргоог хийхдээ тухайн програмын өөрийн холбогдох баримт бичгүүдийг үзнэ үү.

[[mail-disable-sendmail]]
=== sendmail-г идэвхгүй болгох нь

[WARNING]
====

Хэрэв та sendmail-н гадагш захидал илгээх үйлчилгээг идэвхгүй болгосон бол, өөр захидал түгээх системээр түүнийг орлуулах нь чухал юм. Хэрэв тэгэхгүй бол man:periodic[8] гэх мэт системийн функцууд өөрсдийн үр дүнгээ цахим захидлаар илгээх боломжгүй болж, хэвийн үйл ажиллагаа нь доголдох болно. Системийн нилээд хэсэгт sendmail ашигладаг байхаар бодолцсон байгаа. Хэрэв sendmail-г идэвхгүй болгосны дараа програмууд sendmail-н хоёртын файлыг ашиглан захидлыг үргэлжлүүлэн илгээсээр байвал, тэдгээр захидлууд 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-н эхлэл тохируулгуудын талаар дэлгэрэнгүй мэдээллийг man:rc.sendmail[8] заавар хуудаснаас үзнэ үү.

=== Өөрийн шинэ MTA-г систем ачаалах үед ажиллуулах нь

postfix-д зориулсан дараах жишээн дээрх шиг тохиргооны мөрийг [.filename]#/etc/rc.conf# файлд нэмэн шинэ MTA-г ачаалах үед эхлүүлж болно.

[source,bash]
....
# echo 'postfix_enable=«YES»' >> /etc/rc.conf
....

MTA нь одоо автоматаар ачаалах үед эхлэх болно.

=== sendmail-г Системийн Анхдагч Захидал Түгээгч болгох нь

sendmail нь UNIX(R) системүүдийн стандарт програм байхаар хаа сайгүй хэрэглэгддэг болохоор, зарим програм түүнийг системд аль хэдийн суучихсан, ажиллаж байгаа гэж тооцсон байдаг. Тиймээс, бусад олон MTA-ууд sendmail-н тушаалын мөрний интерфэйстэй нийцтэй шийдлүүдийг гаргадаг бөгөөд энэ нь sendmail-н оронд тэдгээр MTA-уудыг ашиглах боломжтой болгодог.

Тиймээс, хэрэв өөр захидал түгээгч хэрэглэж байгаа бол, програмууд sendmail-н [.filename]#/usr/bin/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]#sendmail# нэртэй захидлын дундын хянагчийн хуулбарыг дуудна гэсэн үг юм. Энэ захидлын дундын хянагч [.filename]#mailer.conf# файлыг шалгаж, [.filename]#/usr/libexec/sendmail/sendmail#-г оронд нь ажиллуулна. Энэ системийн тусламжтай дээрх анхдагч [.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` гэсэн fully-qualified domain name буюу бүрэн-баталгаажсан домэйн нэрээр нь заах хэрэгтэй.

Урьд нь, BSD BIND тайлагчийн хувьд дээрх шиг хэрэглэж болдог байсан. Гэвч FreeBSD-тэй хамт ирдэг BIND-н одоогийн хувилбар дээр өөрийн оршин байгаа домэйноос бусад бүрэн баталгаажаагүй домэйн нэрийн хувьд анхдагч товчилсон нэрүүдийг хэрэглэж болохгүй болсон. Тиймээс баталгаажаагүй `mumble` гэсэн хостыг эсвэл `mumble.foo.bar.edu` гэж ойлгоно, эсвэл эх домэйнд хайх болно.

Хайлт цааш `mumble.bar.edu`, ба `mumble.edu` болж үргэлжлэх бөгөөд энэ нь санаснаас шал өөр зүйл болон хувирна. Үүнийг яагаад буруу үйлдэл, бүр аюулгүй байдлын цоорхой гэж тооцох болсныг RFC 1535-с олж үзээрэй.

Дээрх байдлаас гарахын тулд, өөрийн [.filename]#/etc/resolv.conf# файл дотор:

[.programlisting]
....
search foo.bar.edu bar.edu
....

гэсэн мөрийг:

[.programlisting]
....
domain foo.bar.edu
....

мөрийн оронд бичих хэрэгтэй. Гэхдээ, хайлт хийх дэс дараалал нь RFC 1535-д заасны дагуу "дотоод болон гадаад удирдлагын хязгаар"ыг давах ёсгүйг анхаараарай.

=== sendmail захидал өөр дээр минь тойроод ирж байна гээд байна

Энэ асуултанд sendmail-н FAQ дараах байдалтай хариулсан байгаа:

[.programlisting]
....
I'm getting these error messages:

553 MX list for domain.net points back to relay.domain.net
554 <user@domain.net>... Local configuration error

How can I solve this problem?

You have asked mail to the domain (e.g., domain.net) to be
forwarded to a specific host (in this case, relay.domain.net)
by using an MX record, but the relay machine does not recognize
itself as domain.net. Add domain.net to /etc/mail/local-host-names
[known as /etc/sendmail.cw prior to version 8.10]
(if you are using FEATURE(use_cw_file)) or add Cw domain.net
to /etc/mail/sendmail.cf.
....

sendmail-н FAQ-г http://www.sendmail.org/faq/[http://www.sendmail.org/faq/] хаягаар орж үзэж болох ба хэрэв та захидлын серверийнхээ тохиргоогоор нилээд "оролдох" бол эхлээд үүнийг уншихыг зөвлөж байна.

=== Утсаар залгаж холбогддог PPP хост дээр захидлын серверийг хэрхэн ажиллуулах вэ?

Та LAN-д байгаа FreeBSD машиныг Интернэтэд холбох хүсэлтэй байна. Энэ FreeBSD машин тухайн LAN-ий хувьд захидлын гарц байх болно. PPP холболт бол тусгайлан бий болгосон зориулагдсан холболт биш юм.

Үүний тулд хоёр арга байна. Нэг арга нь UUCP ашиглах юм.

Нөгөө арга нь таны домэйны хувьд хоёрдогч MX үйлчилгээг үзүүлэх байнгын холболттой Интернэт сервертэй болох явдал юм. Жишээлбэл, хэрэв танай байгууллагын домэйн нэр `example.com` бөгөөд танай Интернэтийн үйлчилгээ үзүүлэгч танай домэйны хувьд хоёрдогч 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`-д очих бүх захидлыг тэр дор нь боловсруулахыг шаардана.

Байдлыг хэрхэн цааш сайжруулахыг дор үзнэ үү:

{freebsd-isp}-с хулгайлсан зурвас.

[.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.
....

=== Бусад хостоос захидал явуулахад яагаад Relaying Denied гэсэн алдаа байнга гараад байна вэ?

FreeBSD-н анхдагч суулгацад sendmail-г зөвхөн ажиллаж байгаа хостоосоо захидал илгээдэг байхаар тохируулсан байдаг. Жишээ нь, хэрэв нэг POP сервер байгаа бол, хэрэглэгчид сургууль, ажил, эсвэл бусад алсын байршлаас захидлаа шалгах боломжтой байх болно. Гэвч гаднаас захидал илгээж чадахгүй хэвээр байх болно. Ихэвчлэн, оролдого хийснээс хэдэн хормын дараа, MAILER-DAEMON `5.7 Relaying Denied` гэсэн алдааны мэдээлэлтэй захидлыг илгээх болно.

Энэ байдлаас гарах хэд хэдэн зам байна. Хамгийн энгийн арга бол өөрийн ISP-н хаягийг [.filename]#/etc/mail/relay-domains#-д байгаа өртөөлөх (дамжуулах) домэйнуудын файлд бичих хэрэгтэй. Үүнийг хийх амархан аргыг үзүүлэв:

[source,bash]
....
# 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]]
=== Үндсэн Тохиргоо

Хэрэв та өөрийн нэрийн сервер ажиллуулж байгаа эсвэл [.filename]#/etc/resolv.conf#-г тохируулсан л бол гадаад хостууд руу захидал илгээж чадах ёстой. Хэрэв та өөрийн хостод хаягласан захидлыг таны өөрийн FreeBSD машин дээрх MTA (жишээ нь sendmail) хүлээж авдаг болгохыг хүсэж байгаа бол, дараах хоёр арга зам байна:

* Өөрөө нэрийн сервер ажиллуулаад, өөрийн домэйн нэр авах. Жишээлбэл, `FreeBSD.org`
* Захидлыг шууд өөрийн хост дээр хүлээж авдаг байх. Үүний тулд өөрийн машины одоогийн DNS нэрээр захидлыг хүлээн авах. Жишээлбэл, `example.FreeBSD.org`.

Дээрхээс алийг нь ч сонгосон бай, өөр дээрээ захидал шууд хүлээн авдаг байхын тулд байнгын статик IP хаягтай байх ёстой (ихэнх PPP залгадаг холболтынх шиг динамик хаяг биш). Хэрэв галт ханын цаана байгаа бол, галт хана тань руу чиглэсэн SMTP урсгалыг нэвтрүүлэх ёстой. Захидлыг шууд өөрийн хост дээр хүлээн авахын тулд, дараах хоёр нөхцөлийн аль нэгийг хангасан байх ёстой:

* Таны DNS дээрх (хамгийн бага дугаартай) MX бичлэг таны хостын IP хаяг руу заасан байх ёстой.
* Таны DNS дээр таны хостын IP хаяг руу заасан MX бичлэг байх ёсгүй.

Дээр дурдсаны аль нэгийг хангасан байхад, та өөрийн хост дээр захидал хүлээн авах боломжтой болно.

Туршаад үзээрэй:

[source,bash]
....
# 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] хаяг руу илгээсэн захидал ямар ч асуудалгүй хүрэх газраа очих ёстой (`example.FreeBSD.org` дээр sendmail зөв ажиллаж байгаа гэж үзэв).

Үүний оронд доор дурдсантай адил хариу авбал:

[source,bash]
....
# 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 бичлэгт захидлыг хааш нь чиглүүлэх талаар мэдээлэл агуулагддаг. Хэрэв ямар ч 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-үүд таныхаас тусдаа Интернэт холболттой байх шаардлагатай. Таны ISP эсвэл өөр найрсаг газрууд танд энэ үйлчилгээг үзүүлэхэд асуудал байх ёсгүй.

[[mail-domain]]
=== Таны домэйнд хаягласан Захидал

"Захидлын хост" (захидлын сервер гэж нэрлэх нь бий) зохион байгуулахын тулд, янз янзын ажлын машин руу явуулсан захидлыг энэ сервер рүү чиглүүлсэн байх ёстой. Үндсэндээ, өөрийн домэйнд байгаа ямар ч хостын захидлыг "нэхэмжилж аваад"(энэ тохиолдолд `*.FreeBSD.org`) түүнийг өөрийн захидлын сервер рүү дахин чиглүүлнэ гэсэн үг юм. Ингэснээр таны хэрэглэгчдийн захидлууд эзэн захидлын сервер дээр цуглах болно.

Үүнийг хялбар болгохын тулд, нэг __хэрэглэгчийн нэр__тэй хэрэглэгчийн данс хоёр машин дээр хоёулан дээр нь байх шаардлагатай. Үүнийг хийхдээ man:adduser[8]-г ашиглаарай.

Таны хэрэглэх захидлын хост таны сүлжээнд байгаа бүх ажлын машины хувьд томилж гаргасан захидал солилцогч байх ёстой. Энэ тохиргоог DNS сервер дээр дараах байдалтай хийнэ:

[.programlisting]
....
example.FreeBSD.org	A	204.216.27.XX		; Workstation
			MX	10 hub.FreeBSD.org	; Mailhost
....

Энэ нь ажлын машинд хаягласан захидлыг, A бичлэг хааш нь заахаас үл хамааран захидлын хост руу дахин чиглүүлэх болно. Ингэснээр захидал MX хост руу илгээгдэх болно.

Та DNS сервер ажиллуулдаггүй бол дээр дурдсаныг өөрөө бие даан хийх боломжгүй юм. Хэрэв та DNS сервер ажиллуулдаггүй, эсвэл DNS сервер ажиллуулах боломжгүй бол өөрийн ISP эсвэл DNS үйлчилгээ үзүүлдэг газартаа хандаарай.

Хэрэв та хийсвэр захидал байршуулах үйлчилгээ үзүүлдэг бол, дараах мэдээлэл тус болно. Таны үйлчлүүлэгч өөрийн домэйн нэртэй, тухайлбал `customer1.org`, ба та `customer1.org`-д хаягласан бүх захидлыг өөрийн захидлын хост `mail.myhost.com` руу чиглүүлэх хүсэлтэй байна гэж бодъё. Тэгвэл таны DNS дээрх бичлэг дараах байдалтай байх болно:

[.programlisting]
....
customer1.org		MX	10	mail.myhost.com
....

`customer1.org` домэйны зөвхөн захидлыг хариуцахын тулд A бичлэг _шаардлагагүй_.

[NOTE]
====
A бичлэг байхгүй бол `customer1.org` руу ping хийх боломжгүй болохыг анхаарна уу.
====

Хамгийн сүүлд хийх нэг зүйл бол өөрийн захидлын хост дээрх sendmail-д ямар ямар домэйнууд ба/эсвэл хостуудад хаягласан захидлыг хүлээн авахыг хэлж өгөх явдал юм. Үүнийг хэд хэдэн өөр аргаар хийж болно. Дараах аргуудын алийг ч хэрэглэж болно:

* Хэрэв та `FEATURE(use_cw_file)`-г хэрэглэж байгаа бол хостуудыг [.filename]#/etc/mail/local-host-names# файл дотор нэмж бичих.
* Хэрэв та sendmail 8.10 эсвэл түүнээс хойно гарсан хувилбарыг хэрэглэж байгаа бол `Cwyour.host.com` гэсэн мөрийг [.filename]#/etc/sendmail.cf# эсвэл [.filename]#/etc/mail/sendmail.cf# файл дотор бичих.

[[SMTP-UUCP]]
== UUCP-тэй SMTP

FreeBSD-тэй цуг ирдэг sendmail-ийн тохиргоо нь Интернэт рүү шууд холбогддог сайтуудад зориулагдсан юм. Өөрсдийн захидлыг UUCP-ээр солилцохыг хүссэн сайтууд sendmail-ийн өөр тохиргооны файлыг суулгах ёстой.

[.filename]#/etc/mail/sendmail.cf#-г гараар тохируулах нь илүү нарийн, нэмэлт сэдэв юм. sendmail хувилбар 8 нь тохиргооны файлуудаа man:m4[1] урьдчилан процесс хийлтээр үүсгэдэг. Жинхэнэ тохиргоо нь илүү дээд хийсвэрлэлтийн түвшинд болдог. man:m4[1]-ийн тохиргооны файлуудыг [.filename]#/usr/shared/sendmail/cf# сангаас олж болно. [.filename]#cf# сан дахь [.filename]#README# файл нь man:m4[1] тохиргооны үндсэн танилцуулга болон үйлчилдэг.

UUCP хүргэлтийг дэмжих хамгийн шилдэг арга бол `mailertable` боломжийг ашиглах явдал юм. Энэ нь чиглүүлэлтийн шийдвэрүүд гаргахдаа sendmail-ийн ашигладаг мэдээллийн баазыг үүсгэдэг.

Эхлээд та өөрийн [.filename]#.mc# файлыг үүсгэх хэрэгтэй. [.filename]#/usr/shared/sendmail/cf/cf# сан цөөн хэдэн жишээнүүдийг агуулдаг. Таныг өөрийнхөө файлыг [.filename]#foo.mc# гэж нэрлэсэн гэж үзэх юм бол түүнийг зөв [.filename]#sendmail.cf# болгож хөрвүүлэхийн тулд хийх зүйл тань:

[source,bash]
....
# 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`, болон `confDONT_PROBE_INTERFACES` боломжуудыг агуулсан мөрүүд нь захидал хүргэх явцын үед DNS-ийг ашиглуулахгүй байх болно. `UUCP_RELAY` гэдэг нь UUCP хүргэлтийг дэмжихэд шаардлагатай. .UUCP псевдо домэйн хаягуудтай ажиллаж чаддаг Интернэтийн хостын нэрийг тавих хэрэгтэй; та өөрийн 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 хөрш рүү илгээгдэхийг зохицуулдаг. Дараагийн мөр нь локал Ethernet домэйн руу хаяглагдсан, SMTP ашиглан хүргэгдэж болох захидалтай ажилладаг. Эцэст нь .UUCP псевдо домэйн маягаар бичигдсэн UUCP хөршүүд `uucp-neighbor !recipient`-д анхдагч дүрмүүдийг дарж бичих боломжийг олгохын тулд дурдагдсан. Сүүлийн мөр нь үргэлж нэг цэг байдаг. Энэ нь UUCP хүргэлтээр дэлхий рүү гарах таны универсал захидлын гарц болон үйлчилдэг UUCP хөрш рүү гаргана гэж бусад бүгдийн хувьд зааж өгч байна. `uucp-dom:` түлхүүр үгийн ард байрлах бүх цэгийн нэрс зөв UUCP хөршүүд байх ёстой бөгөөд та тэдгээрийг `uuname` тушаал ашиглан шалгаж болно.

Санаж явах зүйл бол энэ файл нь ашиглагдахаасаа өмнө DBM мэдээллийн баазын файл руу хөрвүүлэгдэх шаардлагатай байдаг. Үүнийг хийх тушаалын мөрийг [.filename]#mailertable# файлын дээр хэсэгт тайлбар маягаар хийх нь зүйтэй. Өөрийн [.filename]#mailertable# файлыг өөрчлөх бүртээ та энэ тушаалыг ажиллуулах ёстой юм.

Төгсгөлийн зөвлөгөө: хэрэв та тухайн нэг захидлын чиглүүлэлт ажиллаж байгаа эсэхэд эргэлзэж байгаа бол sendmail-ийн `-bt` тохируулгыг тогтоох хэрэгтэй. Энэ нь sendmail-ийг __хаягийн тест горим__д эхлүүлдэг; `3,0` гэж оруулаад захидал чиглүүлэлтийг тест хийхийг хүссэн хаягаа оруулах хэрэгтэй. Сүүлийн мөр нь ашиглагдсан дотоод захидлын агент, энэ агентийн дуудаж холбогдох хүрэх хост болон (магадгүй хөрвүүлэгдсэн) хаягийг хэлдэг. Энэ горимоос kbd:[Ctrl+D] даран гарна.

[source,bash]
....
% sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 foo@example.com
canonify           input: foo @ example . com
...
parse            returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . >
> ^D
....

[[outgoing-only]]
== Зөвхөн илгээхээр тохируулах нь

Өртөөлөх серверээр дамжуулан захидлыг илгээхийг зөвхөн хүсэх олон тохиолдлууд байдаг. Зарим жишээнүүдийг дурдвал:

* Таны компьютер ширээний машин, гэхдээ та man:send-pr[1] зэрэг програмуудыг ашиглахыг хүсэж байна гэж бодъё. Ингэхийн тулд та өөрийн ISP-ийн захидал өртөөлөх серверийг ашиглах ёстой.
* Компьютер нь захидлыг локалаар зохицуулдаггүй сервер боловч бүх захидлуудыг боловсруулахын тулд өртөөлөх сервер рүү дамжуулах хэрэгтэй байгаа.

Бараг MTA бүр үүнийг хийх чадвартай байдаг. Харамсалтай нь захидлыг зөвхөн дамжуулахын тулд өргөн боломжтой MTA-г зөв тохируулах нь маш төвөгтэй байдаг. sendmail болон postfix зэрэг програмуудыг энэ зорилгоор ашиглах нь хэтэрхий юм.

Мөн хэрэв та энгийн Интернэт хандалтын үйлчилгээг ашиглаж байгаа бол таны гэрээ таныг "захидлын сервер" ажиллуулахыг хориглож магадгүй юм.

Тэдгээр хэрэгцээнүүдийг хангах хялбар арга бол package:mail/ssmtp[] портыг суулгах явдал юм. Дараах тушаалуудыг `root` хэрэглэгчээр ажиллуулна:

[source,bash]
....
# 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_
....

`root`-д зориулж өөрийн жинхэнэ захидлын хаягаа ашиглахаа мартуузай. `mail.example.com`-ийн оронд өөрийн ISP-ийн гарах захидлын өртөөлөх серверийг оруулаарай (зарим ISP-ууд нь үүнийг "гарах захидлын сервер" эсвэл "SMTP сервер" гэдэг).

Гарах захидлын үйлчилгээг нь оролцуулаад sendmail-г хориглохоо мартуузай. Дэлгэрэнгүйг <<mail-disable-sendmail>> хэсгээс үзнэ үү.

package:mail/ssmtp[] нь бас бусад тохируулгуудтай байдаг. Жишээнүүд болон дэлгэрэнгүй мэдээллийг [.filename]#/usr/local/etc/ssmtp# доторх жишээ тохиргооны файл эсвэл ssmtp-ийн гарын авлагын хуудаснаас үзнэ үү.

Энэ маягаар ssmtp-г тохируулах нь зөв ажиллахын тулд захидал илгээхийг шаарддаг, таны компьютер дээрх ямар ч програмыг зөвшөөрөх болно. Ингэхдээ таны ISP-ийн хэрэглээний бодлогыг зөрчилгүйгээр эсвэл таны компьютерийг спам илгээх зорилгоор булаан эзлэхийг зөвшөөрдөггүй байна.

[[SMTP-dialup]]
== Гадагш залгах холболтоор захидлыг ашиглах нь

Хэрэв танд статик IP хаяг байгаа бол та анхдагч утгуудыг өөрчилж тааруулах шаардлагагүй юм. Өөрийн хостын нэрийг өөрт заагдсан Интернэтийн нэрээр тохируулах хэрэгтэй бөгөөд sendmail үлдсэнийг нь хийх болно.

Хэрэв та динамикаар заагдсан IP хаягтай бөгөөд Интернэт рүү диал ап PPP холболтыг ашигладаг бол та өөрийн ISP-ийн захидлын сервер дээр магадгүй захидлын хайрцагтай байна байх. Таны ISP-ийн домэйн `example.net`, таны хэрэглэгчийн нэр `user`, та өөрийн машиныг `bsd.home` гэж нэрлэсэн бөгөөд таны ISP танд `relay.example.net`-г захидал өртөөлөх сервер болгож ашиглаж болно гэж хэлсэн гэж үзье.

Өөрийн захидлын хайрцгаас захидал авахын тулд та татаж авах агентийг суулгах ёстой. fetchmail хэрэгсэл нь олон төрлийн протоколуудыг дэмждэг болохоор үүнд сайн сонголт болох юм. Энэ програм нь багц хэлбэрээр эсвэл портын цуглуулгад байдаг (package:mail/fetchmail[]). Ихэвчлэн таны ISPPOP үйлчилгээ үзүүлдэг. Хэрэв та хэрэглэгчийн 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-д mailto:user@bsd.home[user@bsd.home]-ийн оронд mailto:user@example.net[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 Authentication буюу нэвтрэлт танилттай байх нь хэд хэдэн талаараа ашигтай байдаг. SMTP нэвтрэлт танилт нь sendmail-д аюулгүй байдлын өөр давхарга нэмж чадах бөгөөд хостоо сольдог хөдөлгөөнт хэрэглэгчдийн хувьд өөрийн захидлын клиентийнхээ тохиргоог дахин тохируулалгүйгээр захидлын серверээ ашиглах боломжийг олгодгоороо ашигтай байдаг.

[.procedure]
====

. package:security/cyrus-sasl2[]-г портоос суулгана. Та энэ портыг package:security/cyrus-sasl2[] сангаас олж болно. package:security/cyrus-sasl2[] порт нь хэд хэдэн эмхэтгэх үеийн тохируулгуудыг дэмждэг. Бидний ашиглах 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,bash]
....
# service saslauthd start
....
+ 
Энэ дэмон нь таны FreeBSD [.filename]#passwd# мэдээллийн баазаас нэвтрэлт таниулахын тулд sendmail-ийн хувьд зуучлагч болдог. Энэ нь SMTP нэвтрэлт танилт ашиглах хэрэгтэй хэрэглэгч бүрийн хувьд шинэ хэрэглэгчийн нэрс болон нууц үгсийг үүсгэх шаардлагагүй болгож нэвтрэлт болон захидлын нууц үгийг өөрчлөлгүйгээр хэвээр байлгадаг юм.
. Одоо [.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[] руу эмхэтгэх үед холбоос хийхэд шаардлагатай зөв тохиргооны сонголтуудыг өгөх болно. sendmail-ийг суулгахаас өмнө package:cyrus-sasl2[] суусан байгаа эсэхийг баталгаажуулаарай.
. Дараах тушаалуудыг ажиллуулж sendmail-г дахин эмхэтгэнэ:
+
[source,bash]
....
# 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
....
+ 
[.filename]#/usr/src# тийм ч ихээр өөрчлөгдөөгүй бөгөөд хэрэгцээтэй хуваалцдаг сангууд байгаа тохиолдолд sendmail-ийн эмхэтгэлт ямар нэгэн асуудалгүй хийгдэх ёстой.
. 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-с өөр аргыг ашиглахыг хүсэж байгаа бол хамт ирсэн баримтаас үзнэ үү.
+
. Эцэст нь [.filename]#/etc/mail# дотор байхдаа man:make[1]-г ажиллуулна. Энэ нь таны шинэ [.filename]#.mc# файлыг ажиллуулж [.filename]#freebsd.cf# гэгдэх (өөрийн [.filename]#.mc# файлд зориулж ашигласан тэр) [.filename]#.cf# файлыг үүсгэх болно. Дараа нь `make install restart` тушаалыг ашиглах хэрэгтэй. Энэ нь файлыг [.filename]#sendmail.cf# руу хуулж sendmail-г зөв ажиллуулах болно. Энэ процессийн тухай дэлгэрэнгүй мэдээллийг [.filename]#/etc/mail/Makefile# файлаас лавлана уу.
====

Хэрэв бүгд зөв явсан бол та өөрийн нэвтрэх мэдээллийг захидлын клиент уруугаа оруулж тест захидал илгээж чадах ёстой. Илүү судлахын тулд sendmail-ийн `LogLevel`-г 13 болгон тохируулж [.filename]#/var/log/maillog# файлд алдаа гарах эсэхийг харах хэрэгтэй.

http://www.sendmail.org/~ca/email/auth.html[SMTP нэвтрэлт танилт]тай холбоотой дэлгэрэнгүй мэдээллийг sendmail хуудаснаас үзнэ үү.

[[mail-agents]]
== Хэрэглэгчийн захидал дамжуулагчид

Mail User Agent (MUA) буюу хэрэглэгчийн захидал дамжуулагч гэдэг нь захиаг илгээх болон хүлээн авах зориулалттай програмууд байдаг. Мөн цаашилбал хоорондоо холбогдож "захидал" чулуудацгааснаар хэрэглэгчдийн ажлыг түргэтгэж амарчилж чаддагаараа MUA нар нь илүү хүчирхэг болж байгаа билээ. FreeBSD нь өөртөө маш олон захиа дамжуулагч програмуудыг дэмждэг бөгөөд crossref:ports[ports,FreeBSD портын цуглуулгаас] та суулгах боломжтой. Хэрэглэгчид магадгүй график дүрслэлтэй evolution эсвэл balsa, мөн консол дээр тулгуурлаж ажилладаг програмууд болох mutt, alpine эсвэл `mail`, үгүй бол том байгууллагуудад ихэнхдээ хэрэглэгддэг вэб харуулалттай захиа үзэгч зэргүүдээс сонгон хэрэглэх боломж буй.

[[mail-command]]
=== mail

man:mail[1] бол FreeBSD-н хэрэглэгчийн хэрэглэж болох анхдагч захиа дамжуулагч програм юм. Энэ нь консол дээр ажилладаг бөгөөд текст хэлбэрийн захиануудыг дамжуулах болон хүлээж авах бүх ерөнхий гүйцэтгэлийг санал болгодог ч зарим хавсаргасан файлуудтай ажиллахад зарим хүчин чадал нь дутмаг бөгөөд зөвхөн дотоод захианы хайрцган дээр ажилладаг.

Хэдийгээр `mail` гуай анхнаасаа POP эсвэл IMAP серверүүдийг дэмждэггүй боловч эдгээр сервер дээрх захианы хайрцгуудыг өөрийнхөө дотоод [.filename]#mbox# файл уруу fetchmail програмыг ашиглан хуулж чаддаг. fetchmail-н талаар энэ бүлэгт сүүлд танилцуулах болно (<<mail-fetchmail>>).

Захиа хүлээж авах болон илгээхийн тулд `mail` тушаал өгнө:

[source,bash]
....
% mail
....

Хэрэглэгч бүрд зориулсан [.filename]#/var/mail# доторх захианы хайрцаг нь `mail` хэрэгслээр уншигддаг. Хэрэв захианы хайрцаг хоосон байвал ямар ч захиа алга байна гэсэн мэдэгдэл харуулаад энэ хэрэгсэл гардаг. Захианы хайрцаг доторх захиа уншигдах үед энэ хэрэгслийн харуулах нүүр хэсэг ажиллаж эхлэн захиануудыг жагсаалт болгож харуулдаг. Дараах маягаар захианууд нь автоматаар дугаарлагдаж харуулагддаг:

[source,bash]
....
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]`захианы-дугаар` гэж тушаал өгснөөр тухайн дугаартай захиаг уншина. Доорх жишээнд эхний захиаг уншиж харуулав:

[source,bash]
....
& 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`-н kbd:[R] эсвэл kbd:[r] товчнуудыг ашигладаг. kbd:[R] товч нь `mail`-д зөвхөн илгээсэн хүнд нь хариулж бичихийг зааж өгдөг байхад kbd:[r] товч нь илгээсэн хүнээс гадна мөн өөр бусад хүлээн авагчид уруу илгээх боломж өгдөг. Та мөн энэ тушаалуудын ард нь захианы дугаар бичиж өгөн тухайн оноосон захианд хариулт бичиж болно. Ингэж хариулж бичих үйлдэл хийх үед захианы хамгийн сүүлд нэг kbd:[.] гэсэн цэгтэй мөр нэмэгддэгийг доорх жишээнээс харна уу:

[source,bash]
....
& R 1
To: root@localhost
Subject: Re: test

Thank you, I did get your email.
.
EOT
....

Шинэ захиа илгээхийн тулд kbd:[m] товч хэрэглэгддэг бөгөөд энэ товчлуурын араас хүлээн авах хүний захианы хаягийг бичиж өгдөг. Олон хаяг бичигдэх тохиолдолд захианы хаяг бүр kbd:[,] гэсэн таслал тэмдгээр тусгаарлагддаг. Дараа нь захианы гарчгийг бичиж сүүлд нь захиагаа бичдэг. Захианы төгсгөл хэсгийг тусдаа нэг мөрөнд kbd:[.] гэж цэг оруулж өгснөөр захиаг дуусгадаг.

[source,bash]
....
& mail root@localhost
Subject: I mastered mail

Now I can send and receive email using mail ... :)
.
EOT
....

`mail` хэрэгсэл дотор kbd:[?] товчлуур дарснаар ямар ч үед тусламж мэдээллийг харуулж болдог бөгөөд мөн man:mail[1]-н гарын авлаганд илүү дэлгэрэнгүй мэдээллийг харах боломж бий.

[NOTE]
====
Өмнө тайлбарлаж байсны дагуу man:mail[1] хэрэгсэл нь анхнаасаа хавсралт файлтай ажиллах зориулалттай хийгдээгүй болохоор жаахан ядуувтар хэрэглэгддэг. Сүүлийн үеийн захидал дамжуулагчид болох mutt нь хавсралт файлтай арай ухаалаг ажилладаг. Гэхдээ та заавал `mail`-г хэрэглэмээр байгаа бол package:converters/mpack[] порт танд хэрэг болох байх аа.
====

[[mutt-command]]
=== mutt

mutt бол жижигхэн боловч маш хүчтэй захидал дамжуулагч бөгөөд дараах аятайхан шинж чанаруудыг өөртөө агуулсан байдаг нь:

* Захиануудтай давхар зэрэг ажиллах
* Захианд нууцлалын хувиргалт хийх болон цахим гарын үсэг зурахад зориулагдсан PGP дэмжлэгтэй
* MIME дэмжлэгтэй
* Maildir дэмжлэгтэй
* Дурын өөрчлөлт хийх боломжтой.

Эдгээр шинж чанаруудын ачаар mutt нь хамгийн өргөн тархсан хэрэглэгчийн захидал дамжуулагч болж чадсан юм. http://www.mutt.org[http://www.mutt.org] хаягнаас mutt-н тухай дэлгэрэнгүй мэдээллийг харна уу.

mutt-н тогтвортой хувилбарыг package:mail/mutt[] портоос суулгаж болох бөгөөд хэрэв яг одоо хөгжүүлж буй хувилбарыг нь суулгахыг хүсвэл package:mail/mutt-devel[] портоос суулгаарай.Портоо суулгасны дараа mutt-г эхлүүлэхдээ дараах тушаалыг өгдөг:

[source,bash]
....
% mutt
....

mutt нь хэрэглэгчийн захианы хайрцгийг автоматаар [.filename]#/var/mail# сангаас уншиж хэрэв дотор нь захиа байвал харуулдаг. Хэрэв ямар ч захиа байхгүй байвал хэрэглэгчээс тушаал оруулахыг mutt хүлээх болно. Доорх жишээнд mutt-н захидал харуулалтыг үзүүлэв:

image::mutt1.png[]

Захиаг уншихын тулд сумтай товчоор захидлыг сонгож kbd:[Enter] товч дарна. mutt-н захидал хэрхэн дэлгэж харуулсныг доорх зурган дээр харуулав:

image::mutt2.png[]

man:mail[1] хэрэгсэлтэй ижилхэн mutt нь мөн зөвхөн илгээсэн хүнд нь юм уу эсвэл олон хүлээн авагч уруу хариулт бичиж болдог. Зөвхөн илгээсэн хүнд нь хариу бичихийн тулд kbd:[r] товч дарна. Захиа илгээсэн хүнийг нь оруулаад бүлэг хүмүүс рүү захиа хариулж бичихийн тулд kbd:[g] товч дардаг.

[NOTE]
====
mutt нь захиа бичих болон хариулахын тулд man:vi[1] програмыг ашиглан захиа засварлалт хийлгэдэг. Гэхдээ өөрийн эхлэл сан дотроо [.filename]#.muttrc# файл үүсгэж `editor` хувьсагч үүсгэх эсвэл `EDITOR` гэсэн орчны хувьсагч үүсгэж өөрийн дуртай засварлагчаа зааж өгч бас болно. http://www.mutt.org/[http://www.mutt.org/] хаягнаас та mutt-н талаар хэрхэн тохируулж болох дэлгэрэнгүй зааврыг харна уу.
====

Шинэ захиа бичихийн тулд kbd:[m] товч хэрэглэнэ. Гарчгийг оруулсны дараа man:vi[1] програмыг mutt ажиллуулж захиагаа бичих боломж олгодог. Захиаг бичиж дууссаны дараа `vi` програмаас хадгалаад гарсны дараа илгээх захиаг mutt програм нэгтгэж харуулдаг. Захиагаа илгээхдээ kbd:[y] товч дарна. Илгээхийн өмнөх нэгтгэсэн харуулалтыг дор зурганд үзүүлье:

image::mutt3.png[]

mutt нь өөртөө мөн тусламжийн мэдээлэлтэй өгөөд kbd:[?] товч дарж харуулагдана. Дэлгэцийн дээд хэсэгт ямар товч дарж болох тухай тайлбар мэдээлэл харуулаастай байдаг.

[[alpine-command]]
=== alpine

alpine програмыг эхлэн хэрэглэгчдэд зориулж үүсгэсэн бөгөөд нэмэлт шинж чанаруудыг агуулсан байдаг.

[WARNING]
====

alpine-н өмнөх хувилбаруудад алсаас холбогдсон халдагчид тусгай кодыг хэрэглэгч маягаар холбогдон захиа маягаар илгээж уг аюултай кодыг гүйцэтгэж болдог аюултай нүх байжээ. Эдгээр _мэдэгдсэн_ хүндрэлүүд нь засагдсан боловч alpine-ы програмын аюулгүйн хамгаалалт загвар нь тун сул болохоор FreeBSD-н аюулаас хамгаалагч нөхдүүд уг програмд өөр онгорхой нүх бий гэж итгэдэг юм байна. Та өөртөө гарах эрсдэлийг тооцож мэдэж байгаа бол alpine-г суулгаарай.
====

alpine-н одоогийн хөгжүүлж байгаа хувилбарыг package:mail/alpine[] портоос суулгана. Порт суугдсаны дараа alpine-г дараах тушаалаар эхлүүлдэг:

[source,bash]
....
% alpine
....

Анх удаагаа alpine ажиллах үедээ мэндчилгээ болон товч заавар харуулаад alpine зохиосон хүмүүст мэдээлэх журмын нэргүй захиа илгээхийг хүсдэг. Тэр нэргүй захиаг илгээхийн тулд kbd:[Enter] товч дарах эсвэл мөн kbd:[E] товч дарж нэргүй захиа илгээх хэсгээс хадгалахгүй гардаг. Мэндчилгээний хуудас дараах маягаар харагддаг:

image::pine1.png[]

Хэрэглэгчдэд дараа нь сумтай товчоор сонгож болдог үндсэн цэс харуулагддаг. Үндсэн цэс дотор шинэ захиа бичих, захиа агуулсан сан доторхоо харах, мөн хаяг хадгалалтаа зохицуулах зэрэг боломж байдаг. Доорх зурагт эдгээр боломжуудын цэсийг харуулсан үндсэн цэсийг үзүүлэв.

alpine-р нээгдсэн үндсэн сан бол [.filename]#inbox# гэсэн нэртэй сан байдаг. Захианы жагсаалтыг харахын тулд kbd:[I] товч дарах, эсвэл [.guimenuitem]#MESSAGE INDEX# цэсийг сонгоно:

image::pine2.png[]

Захианы санд буй захиануудыг жагсааж харуулсны дараа сумтай товчоор сонгож kbd:[Enter] товч дарж уншина.

image::pine3.png[]

Доорх зурган дээр alpine дээр энгийн захиаг харуулав. Дэлгэцийн доод хэсэгт лавлах болгож гарын товчлууруудыг харуулдаг. Жишээ нь kbd:[r] товч дарснаар одоогийн харуулж байгаа захианд хариу бичнэ.

image::pine4.png[]

alpine дээр захианд хариу бичих үед pico засварлагч хэрэглэгддэг бөгөөд энэ засварлагч нь alpine-тай хамт суугддаг. pico хэрэгсэл нь захиа бичихэд маш энгийн бөгөөд man:vi[1] эсвэл man:mail[1] зэргийг ашиглагчдыг бодвол шинэ хэрэглэгчид рүү илүү дөхүүлсэн байдаг. Хариулт захиагаа бичиж дуусаад kbd:[Ctrl+X] товч дарж илгээдэг. Илгээхийн өмнө alpine танаас лавлаж асуух болно.

image::pine5.png[]

Үндсэн цэснээс [.guimenuitem]#SETUP# гэж сонгосноор alpine програмыг та хүссэнээрээ өөрчлөх боломжтой. http://www.washington.edu/alpine/[http://www.washington.edu/alpine/] хаягаас дэлгэрэнгүй мэдээллийг харна уу.

[[mail-fetchmail]]
== fetchmail-г ашиглах нь

fetchmail нь хэрэглэгчдэд алсын IMAP болон POP серверүүдээс захидал автоматаар татан авч локал захидлын хайрцгуудад хадгалах боломжийг олгодог, өргөн боломжтой, IMAP болон POP клиент юм. Тэдгээр захидлын хайрцгуудад дараа нь хандахад илүү хялбар байдаг. fetchmail-г package:mail/fetchmail[] портыг ашиглан суулгаж болох бөгөөд төрөл бүрийн боломжуудыг санал болгодгоос заримыг дурдвал:

* POP3, APOP, KPOP, IMAP, ETRN болон ODMR протоколуудын дэмжлэг.
* SMTP-г ашиглан захидал дамжуулах чадвар. Энэ нь шүүлт хийх, дамжуулалт хийх болон хэвийн ажиллахын тулд хуурамч дүр үзүүлэх боломжийг олгодог.
* Шинэ захидлуудыг байнга шалгахын тулд дэмон горимоор ажиллуулж болно.
* Олон захидлын хайрцгуудыг хүлээн авч тэдгээрийг тохиргооноос хамааран өөр локал хэрэглэгчүүд рүү дамжуулж чаддаг.

fetchmail-ийн бүх боломжуудыг тайлбарлах нь энэ баримтын хүрээнээс гадуур боловч зарим нэг үндсэн боломжуудыг тайлбарлах болно. fetchmail хэрэгсэл нь зөв ажиллахын тулд [.filename]#.fetchmailrc# гэгддэг тохиргооны файлыг шаарддаг. Энэ файл нь серверийн мэдээлэл болон нэвтрэх итгэмжлэлүүдийг агуулдаг. Энэ файлын агуулгын мэдрэмтгий чанараас болоод энэ файлыг зөвхөн эзэмшигч нь уншиж чаддаг байхаар болгон дараах тушаал ашиглаж хийхийг зөвлөдөг:

[source,bash]
....
% chmod 600 .fetchmailrc
....

Дараах [.filename]#.fetchmailrc# файл нь ганц хэрэглэгчийн захидлын хайрцгийг POP ашиглан татаж авах жишээ юм. Энэ нь fetchmail-г `joesoap` хэрэглэгчийн нэр болон `XXX` нууц үгийг ашиглан `example.com` руу холбогдыг зааж байна. Энэ жишээ нь `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-г 600 секунд бүр шалгахаар тохируулж байна:

[source,bash]
....
% fetchmail -d 600
....

fetchmail-ийн тухай дэлгэрэнгүй мэдээллийг http://fetchmail.berlios.de/[http://fetchmail.berlios.de/] хаягаас олж болно.

[[mail-procmail]]
== procmail-г ашиглах нь

procmail хэрэгсэл нь ирж байгаа захидлыг шүүхэд хэрэглэгддэг гайхамшигтай хүчтэй програм юм. Энэ нь хэрэглэгчдэд ирж байгаа захидлуудад тааруулж "дүрмүүдийг" тодорхойлох боломжийг олгодог бөгөөд энэ дүрмүүдийг ашиглан тусгай үйлдлүүд хийх эсвэл захидлыг өөр захидлын хайрцаг ба/эсвэл цахим захидлын хаягууд руу дахин чиглүүлэх зэрэг ажлуудыг хийж болох юм. procmail-г package:mail/procmail[] порт ашиглан суулгаж болно. Суулгасны дараа үүнийг MTA-уудтай цуг ажиллахаар тохируулж болно; дэлгэрэнгүй мэдээллийг өөрийн MTA-ийн баримтаас лавлана уу. Мөн procmail-н боломжуудыг ашиглаж байгаа хэрэглэгчийн гэрийн сан дахь [.filename]#.forward# файлд дараах мөрийг нэмж өгч болно:

[.programlisting]
....
"|exec /usr/local/bin/procmail || exit 75"
....

Дараах хэсэг нь procmail-ийн зарим үндсэн дүрмүүдийг үзүүлэх бөгөөд тэдгээрийн юу хийдэг талаар товч тайлбар өгөх болно. Эдгээр дүрмүүд болон бусдууд нь [.filename]#.procmailrc# файлд хийгдсэн байх ёстой бөгөөд энэ файл нь хэрэглэгчийн гэрийн санд байрлах ёстой.

Эдгээр дүрмүүдийн ихэнхийг man:procmailex[5]-ийн гарын авлагын хуудаснаас олж болно.

mailto:user@example.com[user@example.com]-с ирсэн бүх захидлыг mailto:goodmail@example2.com[goodmail@example2.com] гадаад хаяг уруу дамжуулна:

[.programlisting]
....
:0
* ^From.*user@example.com
! goodmail@example2.com
....

1000 байтаас бага бүх захидлуудыг mailto:goodmail@example2.com[goodmail@example2.com] гадаад хаяг уруу дамжуулна:

[.programlisting]
....
:0
* < 1000
! goodmail@example2.com
....

mailto:alternate@example.com[alternate@example.com] руу илгээсэн бүх захидлыг [.filename]#alternate# гэгдсэн захидлын хайрцагт хийнэ:

[.programlisting]
....
:0
* ^TOalternate@example.com
alternate
....

"Spam" сэдэв бүхий бүх захидлыг [.filename]#/dev/null# уруу илгээнэ:

[.programlisting]
....
:0
^Subject:.*Spam
/dev/null
....

Ирж байгаа `FreeBSD.org` захидлын жагсаалтуудыг шалгаж жагсаалт бүрийг өөрийнх нь захидлын хайрцаг уруу хийдэг, ашигтай зааврыг доор үзүүлэв:

[.programlisting]
....
:0
* ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG
{
	LISTNAME=${MATCH}
	:0
	* LISTNAME??^\/[^@]+
	FreeBSD-${MATCH}
}
....
