URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 59173
[ Назад ]

Исходное сообщение
"postfix преобразование адресов."

Отправлено klame2 , 14-Авг-05 13:16 
Здравствуйте! В postfix настроено два виртуальных домена domain1.ru и domain2.ru. Необходимо, чтобы адреса вида user@domain1.ru преобразовывались в user@domain2.ru. После прочтения документации вижу 2 варианта: virtual_alias_maps или recipient_canonical_maps(добавить строку вида: @domain1.ru   @domain2.ru). Однако, так теряется проверка существования пользователя на этапе RCPT To в домене domain1.ru, то есть при несуществующем пользователе после rcpt to: всегда будет ok. До включения преобразования адресов всё было в порядке. Есть ли способ преобразования адресов, не теряя при этом возможности проверки существования пользователей?

Содержание

Сообщения в этом обсуждении
"postfix преобразование адресов."
Отправлено jonatan , 14-Авг-05 16:51 
Попробуйте так.

/etc/postfix/main.cf:
    virtual_mailbox_domains = domain1.ru, domain2.ru
    virtual_mailbox_maps = hash:/etc/postfix/vmailbox
    virtual_alias_maps = hash:/etc/postfix/virtual

/etc/postfix/virtual:
    @domain1.ru    @domain2.ru


"postfix преобразование адресов."
Отправлено klame2 , 14-Авг-05 17:55 
>Попробуйте так.
>
>/etc/postfix/main.cf:
>    virtual_mailbox_domains = domain1.ru, domain2.ru
>    virtual_mailbox_maps = hash:/etc/postfix/vmailbox
>    virtual_alias_maps = hash:/etc/postfix/virtual
>
>/etc/postfix/virtual:
>    @domain1.ru    @domain2.ru

пробовал, проверка при таком раскладе для домена domain1.ru не работает


"postfix преобразование адресов."
Отправлено jonatan , 14-Авг-05 18:38 
>пробовал, проверка при таком раскладе для домена domain1.ru не работает
Да, действительно. Тогда, как вариант, "повесить" второй postfix и насроить на нем переписывание доменов. На первом настроить пересылку через второй.

"postfix преобразование адресов."
Отправлено klame2 , 15-Авг-05 09:13 
>>пробовал, проверка при таком раскладе для домена domain1.ru не работает
>Да, действительно. Тогда, как вариант, "повесить" второй postfix и насроить на нем
>переписывание доменов. На первом настроить пересылку через второй.
не нравится это, усложнение слишком сильное. Допустим я отключу проверку на этапе rcpt to, хотелось бы тогда не слать в ответ письма о том, что пользователь не найден. Можно ли это сделать в postfix?

"postfix преобразование адресов."
Отправлено jonatan , 15-Авг-05 11:42 
Не так это и сложно, как кажется. Можно не настраивать второй postfix, а использовать, например, smtpd_proxy_filter (или content_filter), который обычно уже используется.

/etc/postfix/master.cf:

1.2.3.4:smtp      inet  n       -       n       -       -       smtpd
  -o smtpd_proxy_filter=127.0.0.1:10026
  -o smtp_send_xforward_command=yes

127.0.0.1:10026     inet  n       -       n       -       -       smtpd
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8
  -o cleanup_service_name=cleanup-int
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks=127.0.0.0/8

cleanup-int   unix  n       -       n       -       0       cleanup
  -o virtual_alias_maps=hash:/etc/postfix/virtual_alias


/etc/postfix/main.cf:
    virtual_mailbox_domains = domain1.ru, domain2.ru
    virtual_mailbox_maps = hash:/etc/postfix/vmailbox
    virtual_mailbox_base = /var/spool/mail/vhosts
    virtual_uid_maps = static:5000
    virtual_gid_maps = static:5000


/etc/postfix/vmailbox:
    user@domain1.ru   domain2.ru/user
    user@domain2.ru   domain2.ru/user


/etc/postfix/virtual:
    @domain1.ru    @domain2.ru


"postfix преобразование адресов."
Отправлено klame2 , 15-Авг-05 12:30 
>Не так это и сложно, как кажется. Можно не настраивать второй postfix,
>а использовать, например, smtpd_proxy_filter (или content_filter), который обычно уже используется.
>
>/etc/postfix/master.cf:
>
>1.2.3.4:smtp      inet  n    
>   -       n
>      -    
>  -       smtpd
>  -o smtpd_proxy_filter=127.0.0.1:10026
>  -o smtp_send_xforward_command=yes
>
>127.0.0.1:10026     inet  n    
>  -       n  
>     -      
> -       smtpd
>  -o smtpd_authorized_xforward_hosts=127.0.0.0/8
>  -o cleanup_service_name=cleanup-int
>  -o smtpd_helo_restrictions=
>  -o smtpd_client_restrictions=
>  -o smtpd_sender_restrictions=
>  -o smtpd_recipient_restrictions=permit_mynetworks,reject
>  -o mynetworks=127.0.0.0/8
>
>cleanup-int   unix  n      
>-       n    
>   -       0
>      cleanup
>  -o virtual_alias_maps=hash:/etc/postfix/virtual_alias
>
>
>/etc/postfix/main.cf:
>    virtual_mailbox_domains = domain1.ru, domain2.ru
>    virtual_mailbox_maps = hash:/etc/postfix/vmailbox
>    virtual_mailbox_base = /var/spool/mail/vhosts
>    virtual_uid_maps = static:5000
>    virtual_gid_maps = static:5000
>
>
>/etc/postfix/vmailbox:
>    user@domain1.ru   domain2.ru/user
>    user@domain2.ru   domain2.ru/user
>
>
>/etc/postfix/virtual:
>    @domain1.ru    @domain2.ru

это уже интереснее, попробую. Спасибо!


"postfix преобразование адресов."
Отправлено klame2 , 15-Авг-05 12:39 
единственный момент, на smtp уже есть фильтр для проверки на вирусы\спам:
smtp      inet  n       -       n       -       -       smtpd -o content_filter=spam:dummy
spam      unix  -       n       n       -       100      pipe
    flags=Rqu user=drweb argv=/usr/local/bin/spamc -u dovecot -e /usr/local/drweb/drweb-postfix --conf=/usr/local/etc/drweb/drweb_postfix.conf -f ${sender} -- ${recipient}
Как лучше в этом случае состыковать smtpd_proxy_filter и имеющийся content_filter?

"postfix преобразование адресов."
Отправлено jonatan , 15-Авг-05 12:48 
smtp      inet  n       -       n       -       -       smtpd
  -o smtpd_proxy_filter=127.0.0.1:10026
  -o smtp_send_xforward_command=yes

127.0.0.1:10026     inet  n       -       n       -       -       smtpd
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8
  -o cleanup_service_name=cleanup-int
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks=127.0.0.0/8
  -o content_filter=spam:dummy


"postfix преобразование адресов."
Отправлено klame2 , 15-Авг-05 13:26 
>smtp      inet  n    
>   -       n
>      -    
>  -       smtpd
>  -o smtpd_proxy_filter=127.0.0.1:10026
>  -o smtp_send_xforward_command=yes
>
>127.0.0.1:10026     inet  n    
>  -       n  
>     -      
> -       smtpd
>  -o smtpd_authorized_xforward_hosts=127.0.0.0/8
>  -o cleanup_service_name=cleanup-int
>  -o smtpd_helo_restrictions=
>  -o smtpd_client_restrictions=
>  -o smtpd_sender_restrictions=
>  -o smtpd_recipient_restrictions=permit_mynetworks,reject
>  -o mynetworks=127.0.0.0/8
>  -o content_filter=spam:dummy
Всё сделал - работает. Большое спасибо за участие!