This shows you the differences between two versions of the page.
Next revision | Previous revision Next revision Both sides next revision | ||
протокол_smtp_и_mail_transfer_agent [2009/05/04 07:34] val created |
протокол_smtp_и_mail_transfer_agent [2009/10/28 10:35] val |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Протокол SMTP и Mail Transfer Agent ====== | ====== Протокол SMTP и Mail Transfer Agent ====== | ||
+ | |||
+ | ===== Пример SMTP диалога ===== | ||
+ | <code> | ||
+ | [gate:~] # telnet gate.isp.un 25 | ||
+ | ... | ||
+ | HELO gate.corpX.un | ||
+ | ... | ||
+ | MAIL FROM: root@gate.corpX.un | ||
+ | ... | ||
+ | RCPT TO: root@gate.isp.un | ||
+ | ... | ||
+ | DATA | ||
+ | ... | ||
+ | To: root@gate.isp.un | ||
+ | Subject: test | ||
+ | |||
+ | test | ||
+ | . | ||
+ | |||
+ | QUIT | ||
+ | </code> | ||
+ | |||
+ | ===== Конфигурация службы MTA ===== | ||
+ | |||
+ | ==== Установка и настройка MTA на обработку почты домена hostname ==== | ||
+ | |||
+ | === FreeBSD (sendmail) === | ||
+ | <code> | ||
+ | [gate:~] # more /usr/share/sendmail/cf/README | ||
+ | |||
+ | [gate:~] # cd /etc/mail | ||
+ | |||
+ | [gate:/etc/mail] # cat gate.corpX.un.mc | ||
+ | OSTYPE(freebsd6) | ||
+ | MAILER(local) | ||
+ | MAILER(smtp) | ||
+ | |||
+ | [gate:/etc/mail] # make cf | ||
+ | [gate:/etc/mail] # make install | ||
+ | |||
+ | [gate:/etc/mail] # cat /etc/rc.conf | ||
+ | ... | ||
+ | sendmail_enable="YES" | ||
+ | |||
+ | [gate:/etc/mail] # /etc/rc.d/sendmail restart | ||
+ | </code> | ||
+ | |||
+ | === Ubuntu (postfix) === | ||
+ | <code> | ||
+ | root@gate:~# apt-get install postfix mailx | ||
+ | General type of mail configuration: Internet Site | ||
+ | System mail name: gate.corpX.un | ||
+ | |||
+ | root@gate:~# man 5 postconf | ||
+ | |||
+ | root@gate:~# cat /etc/aliases | ||
+ | # Added by installer for initial user | ||
+ | # root: student | ||
+ | |||
+ | root@gate:~# newaliases | ||
+ | </code> | ||
+ | |||
+ | ==== Использование UA mail ==== | ||
+ | |||
+ | === Отправка почты === | ||
+ | <code> | ||
+ | gate# mail root | ||
+ | |||
+ | gate# mail root@gate.corpX.un | ||
+ | </code> | ||
+ | |||
+ | === Чтение почты === | ||
+ | <code> | ||
+ | gate# mail | ||
+ | Mail version 8.1 6/6/93. Type ? for help. | ||
+ | "/var/mail/root": 2 messages 2 new | ||
+ | >N 1 user@server.corpX.un Wed Oct 26 16:33 22/814 "w" | ||
+ | N 2 root@server.corpX.un Wed Oct 26 16:35 12/425 | ||
+ | </code> | ||
+ | |||
+ | === Команды UA mail === | ||
+ | <code> | ||
+ | h - список писем | ||
+ | номер - читать письмо с указанным номером | ||
+ | d 1-4 - удалить письма с 1 по 4 | ||
+ | d * - удалить все письма | ||
+ | r номер - написать ответ на письмо с указанным номером | ||
+ | ? - help | ||
+ | q - выход | ||
+ | </code> | ||
+ | |||
+ | ==== Настройка MTA на обработку почты домена corpX.un ==== | ||
+ | |||
+ | === Настройка DNS === | ||
+ | |||
+ | == FreeBSD == | ||
+ | <code> | ||
+ | [gate:~] # cd /etc/namedb/master/ | ||
+ | </code> | ||
+ | |||
+ | == Ubuntu == | ||
+ | <code> | ||
+ | root@gate:~# cd /var/cache/bind/ | ||
+ | </code> | ||
+ | |||
+ | == FreeBSD/Ubuntu == | ||
+ | <code> | ||
+ | gate# cat corpX.un | ||
+ | $TTL 3h | ||
+ | corp13.un. SOA ns root.gate 1 1d 12h 1w 3h | ||
+ | NS ns | ||
+ | A 172.16.1.13 | ||
+ | ... | ||
+ | |||
+ | gate# nslookup -q=A corpX.un | ||
+ | </code> | ||
+ | |||
+ | === Настройка MTA sendmail (FreeBSD) === | ||
+ | <code> | ||
+ | [gate:/etc/mail] # cat gate.corpX.un.mc | ||
+ | OSTYPE(freebsd6) | ||
+ | FEATURE(use_cw_file) | ||
+ | MAILER(local) | ||
+ | MAILER(smtp) | ||
+ | |||
+ | [gate:/etc/mail] # cat local-host-names | ||
+ | corpX.un | ||
+ | |||
+ | [gate:/etc/mail] # make install | ||
+ | |||
+ | [gate:/etc/mail] # /etc/rc.d/sendmail restart | ||
+ | </code> | ||
+ | |||
+ | === Настройка MTA postfix (Ubuntu) === | ||
+ | <code> | ||
+ | root@gate:~# rcsdiff /etc/postfix/main.cf | ||
+ | < mydestination = gate.corpX.un, localhost.corpX.un, , localhost | ||
+ | --- | ||
+ | > mydestination = gate.corpX.un, localhost.corpX.un, corpX.un, localhost | ||
+ | |||
+ | root@gate:~# /etc/init.d/postfix force-reload | ||
+ | </code> | ||
+ | |||
+ | ==== Настройка MTA на использование MTA провайдера ==== | ||
+ | |||
+ | === sendmail (FreeBSD) === | ||
+ | <code> | ||
+ | [server:/etc/mail] # cat server.corpX.un.mc | ||
+ | OSTYPE(freebsd6) | ||
+ | define(`SMART_HOST', `gate.corpX.un') | ||
+ | MAILER(local) | ||
+ | MAILER(smtp) | ||
+ | |||
+ | [server:/etc/mail] # make cf | ||
+ | [server:/etc/mail] # make install | ||
+ | [server:/etc/mail] # /etc/rc.d/sendmail restart | ||
+ | </code> | ||
+ | |||
+ | === postfix (Ubuntu) === | ||
+ | <code> | ||
+ | root@server:~# apt-get install postfix mailx | ||
+ | General type of mail configuration: Internet Site | ||
+ | System mail name: server.corpX.un | ||
+ | |||
+ | root@gate:~# cat /etc/aliases | ||
+ | # Added by installer for initial user | ||
+ | # root: student | ||
+ | |||
+ | root@gate:~# newaliases | ||
+ | |||
+ | root@server:~# rcsdiff /etc/postfix/main.cf | ||
+ | 35c35 | ||
+ | < relayhost = | ||
+ | --- | ||
+ | > relayhost = gate.corpX.un | ||
+ | </code> | ||
+ | |||
+ | ==== Настройка MTA на релеинг почты из локальной сети ==== | ||
+ | |||
+ | === sendmail (FreeBSD) === | ||
+ | <code> | ||
+ | [gate:/etc/mail] # cat gate.corpX.un.mc | ||
+ | OSTYPE(freebsd6) | ||
+ | FEATURE(use_cw_file) | ||
+ | FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access') | ||
+ | MAILER(local) | ||
+ | MAILER(smtp) | ||
+ | |||
+ | [gate:/etc/mail] # cat access | ||
+ | 192.168.X RELAY | ||
+ | |||
+ | [gate:/etc/mail] # make maps | ||
+ | [gate:/etc/mail] # make install | ||
+ | [gate:/etc/mail] # /etc/rc.d/sendmail restart | ||
+ | </code> | ||
+ | |||
+ | === postfix (Ubuntu) === | ||
+ | <code> | ||
+ | root@gate:~# rcsdiff /etc/postfix/main.cf | ||
+ | 36c36 | ||
+ | < mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 | ||
+ | --- | ||
+ | > mynetworks = 127.0.0.0/8 192.168.13.0/24 | ||
+ | </code> | ||
+ | |||
+ | ==== Настройка MTA на релеинг почты домена server.corpX.un ==== | ||
+ | |||
+ | === Настройка в DNS MX записей домена server.corpX.un === | ||
+ | <code> | ||
+ | gate# cat corpX.un | ||
+ | … | ||
+ | server A 192.168.X.10 | ||
+ | MX 2 gate | ||
+ | MX 1 server | ||
+ | … | ||
+ | </code> | ||
+ | |||
+ | Альтернативы: | ||
+ | * Использование DNS View позволяет для внешних хостов указывать один почтовый сервер, а внутри другой. | ||
+ | * /etc/mail/mailertable позволяет явно переправить почту с gate на server | ||
+ | |||
+ | === Запуск MTA почтового домена server.corpX.un (FreeBSD) === | ||
+ | <code> | ||
+ | [server:~] # cat /etc/rc.conf | ||
+ | ... | ||
+ | sendmail_enable="YES" | ||
+ | |||
+ | [server:~] # /etc/rc.d/sendmail restart | ||
+ | </code> | ||
+ | |||
+ | === Настройка MTA релея sendmail (FreeBSD) === | ||
+ | <code> | ||
+ | [gate:/etc/mail] # cat access | ||
+ | ... | ||
+ | server.corpX.un RELAY | ||
+ | |||
+ | [gate:/etc/mail] # make maps | ||
+ | </code> | ||
+ | Для решения этой задачи можно использовать /etc/mail/relay-domains | ||
+ | |||
+ | === Настройка MTA релея postfix (Ubuntu) === | ||
+ | <code> | ||
+ | root@gate:~# rcsdiff /etc/postfix/main.cf | ||
+ | 40a41 | ||
+ | > permit_mx_backup = server.corpX.un | ||
+ | </code> | ||
+ | |||
+ | ==== Настройка MTA на релеинг почты на основе аутентификации ==== | ||
+ | [[http://www.freebsd.org/doc/en/books/handbook/smtp-auth.html]] | ||
+ | |||
+ | ==== Использование почтовых псевдонимов ==== | ||
+ | |||
+ | === FreeBSD === | ||
+ | <code> | ||
+ | [gate:~] # cat /etc/mail/aliases | ||
+ | </code> | ||
+ | |||
+ | === Ubuntu === | ||
+ | <code> | ||
+ | root@gate:~# cat /etc/aliases | ||
+ | </code> | ||
+ | |||
+ | === FreeBSD/Ubuntu === | ||
+ | <code> | ||
+ | ... | ||
+ | root: student, val@gate.isp.un | ||
+ | ... | ||
+ | </code><code> | ||
+ | gate# newaliases | ||
+ | |||
+ | gate# mail root | ||
+ | </code> | ||
+ | |||
+ | ==== Использование виртуальных почтовых доменов ==== | ||
+ | |||
+ | Домен server.corpX.un | ||
+ | |||
+ | === Настройка DNS === | ||
+ | <code> | ||
+ | gate# cat corpX.un | ||
+ | ... | ||
+ | server A 192.168.X.10 | ||
+ | MX 2 gate | ||
+ | ... | ||
+ | </code> | ||
+ | |||
+ | === Добавление учетных записей пользователей виртуального домена === | ||
+ | |||
+ | == FreeBSD == | ||
+ | <code> | ||
+ | [gate:/etc/mail] # adduser | ||
+ | Username: mailuser | ||
+ | … | ||
+ | shell: nologin | ||
+ | … | ||
+ | </code> | ||
+ | |||
+ | == Ubuntu == | ||
+ | <code> | ||
+ | root@gate:~# adduser mailuser | ||
+ | ... | ||
+ | |||
+ | root@gate:~# chsh mailuser | ||
+ | ... | ||
+ | Login Shell [/bin/bash]: /usr/sbin/nologin | ||
+ | </code> | ||
+ | |||
+ | === Настройка MTA на поддержку виртуального домена === | ||
+ | |||
+ | == sendmail (FreeBSD) == | ||
+ | <code> | ||
+ | [gate:/etc/mail] # cat access | ||
+ | 192.168.X RELAY | ||
+ | # server.corpX.un RELAY | ||
+ | |||
+ | [gate:/etc/mail] # cat local-host-names | ||
+ | corpX.un | ||
+ | server.corpX.un | ||
+ | |||
+ | [gate:/etc/mail] # grep virt freebsd.mc | ||
+ | |||
+ | [gate:/etc/mail] # cat gate.corpX.un.mc | ||
+ | OSTYPE(freebsd6) | ||
+ | FEATURE(use_cw_file) | ||
+ | FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access') | ||
+ | FEATURE(virtusertable, `hash -o /etc/mail/virtusertable') | ||
+ | MAILER(local) | ||
+ | MAILER(smtp) | ||
+ | |||
+ | [gate:/etc/mail] # cat virtusertable | ||
+ | root@server.corpX.un mailuser | ||
+ | |||
+ | [gate:/etc/mail] # make maps | ||
+ | [gate:/etc/mail] # make install | ||
+ | [gate:/etc/mail] # /etc/rc.d/sendmail restart | ||
+ | </code> | ||
+ | |||
+ | == postfix (Ubuntu) == | ||
+ | <code> | ||
+ | root@gate:~# rcsdiff /etc/postfix/main.cf | ||
+ | 41c41,42 | ||
+ | < permit_mx_backup = server.corpX.un | ||
+ | --- | ||
+ | > virtual_alias_domains = server.corpX.un | ||
+ | > virtual_alias_maps = hash:/etc/postfix/virtual | ||
+ | |||
+ | root@gate:~# cat /etc/postfix/virtual | ||
+ | root@server.corpX.un mailuser | ||
+ | |||
+ | root@gate:~# postmap /etc/postfix/virtual | ||
+ | |||
+ | root@gate:~# /etc/init.d/postfix force-reload | ||
+ | </code> | ||
+ | |||
+ | === Тестирование === | ||
+ | <code> | ||
+ | gate# mail root@server.corpX.un | ||
+ | |||
+ | gate# mail –u mailuser | ||
+ | </code> | ||