This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
протокол_smtp_и_mail_transfer_agent [2010/06/09 13:47] val |
— (current) | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Протокол 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 mailutils | ||
| - | 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> | ||
| - | |||
| - | Попробовать команду hoststat | ||
| - | |||
| - | Попробовать To:server.corpX.un RELAY | ||
| - | |||
| - | Для решения этой задачи можно использовать /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> | ||