Nhầm lẫn về alias_maps và virtual_alias_maps


22

Tôi đã đọc lại các tài liệu về điều này cũng như các bài viết khác ở đây và điều này vẫn chưa rõ ràng với tôi. Tôi đã được thử nghiệm những thứ khác nhau để hiểu sự khác biệt giữa alias_mapsvirtual_alias_mapsvà tôi không thấy việc sử dụng các thiết lập 2 riêng biệt trong postfix. Đây là những gì tôi tìm thấy cho đến nay (Lưu ý - Tôi đang sử dụng postfix trong cùng máy chủ với máy chủ web của mình dưới dạng máy khách null để chỉ gửi email) :

1) / etc / bí danh tệp:

root: me@somedomain.com

Khi tôi thêm phần trên vào alias_maps, tôi nhận thấy rằng một số dịch vụ như fail2ban có thể chọn dịch vụ này và nó sẽ gửi email gốc đến các địa chỉ email bí danh được đề cập. Tuy nhiên, tôi cũng nhận thấy rằng một số dịch vụ khác (như maillệnh) không tôn trọng điều này và cố gắng gửi email trực tiếp đến root@mydomain.com không tồn tại (tôi nghĩ rằng myorigincài đặt postfix có thêm @ mydomain.com) . Để sửa lỗi này, sau đó tôi đã thêmvirtual_alias_maps

2) / etc / postfix / ảo

root     me@someotherdomain.com

Khi bổ sung ở trên, tất cả các dịch vụ đều sử dụng email bí danh ảo này. Tôi cũng nhận thấy rằng một khi tôi thêm vào ở trên, thậm chí fail2ban bắt đầu bỏ qua các cài đặt ban đầu của tôi trong /etc/aliases/tệp và bắt đầu theo địa chỉ email được cung cấp trong tệp ảo.

Bây giờ điều này đã làm tôi bối rối hơn nữa -

  1. Tại sao chúng ta cần /etc/aliases/khi có email trong bản đồ bí danh ảo dường như ghi đè lên nó?

  2. Mục đích của việc có 2 ánh xạ bí danh riêng biệt này là gì và khi nào chúng ta quyết định khi nào sẽ sử dụng cái gì?

  3. Tại sao fail2ban (được cấu hình để gửi email đến root@localhost) trước tiên theo địa chỉ email được cung cấp trong alias_maps(/ etc / aliases /) và sau đó quyết định bỏ qua rằng một khi virtual_alias_mapsđã được thêm vào?

  4. Tại sao tất cả các dịch vụ không đọc các bí danh email được đề cập trong / etc / bí danh và chúng chỉ hoạt động khi các bí danh email được thêm vào trong bản đồ bí danh ảo?

Tôi đã dành vài giờ kể từ ngày hôm qua và vẫn không chắc chắn. Ai đó có thể giúp tôi giải tỏa sự nhầm lẫn của tôi?

EDIT: Đây là nhật ký thư khi email được gửi đến root bằng mail rootlệnh. Email bí danh cho root được đề cập trong / etc / aliases /. Nhưng thư không hoạt động cho đến khi tôi chuyển email bí danh gốc này từ aliases_mapssangvirtual_aliases_maps

Đăng nhập khi bí danh email gốc được đề cập trong /etc/aliases/:

Nov 14 16:39:27 Debian postfix/pickup[4339]: 0F12643432: uid=0 from=<root>

Nov 14 16:39:27 Debian postfix/cleanup[4495]: 0F12643432: message-id=<20141114110927.0F12643432@Debian.domainname.com>

Nov 14 16:39:27 Debian postfix/qmgr[4338]: 0F12643432: from=<root@domainname.com>, size=517, nrcpt=1 (queue active)

Nov 14 16:39:27 Debian postfix/error[4496]: 0F12643432: to=<root@domainname.com>, orig_to=<root>, relay=none, delay=0.04, delays=0.03/0/0/0.01, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to domainname.com[128.199.147.136]:25: Connection refused)

Đây là nhật ký sau khi bí danh email cho gốc được chuyển từ /etc/aliases/đến /etc/postfix/virtualnơi gửi email thành công sau khi thay đổi:

Nov 14 16:44:58 Debian postfix/pickup[4545]: ADD9A43436: uid=0 from=<root>

Nov 14 16:44:58 Debian postfix/cleanup[4563]: ADD9A43436: message-id=<20141114111458.ADD9A43436@Debian.domainname.com>

Nov 14 16:44:58 Debian postfix/qmgr[4544]: ADD9A43436: from=<root@domainname.com>, size=453, nrcpt=1 (queue active)

Nov 14 16:45:00 Debian postfix/smtp[4551]: ADD9A43436: to=<admin@somesite.com>, orig_to=<root>, relay=somesite.com[108.160.157.120]:25, delay=1.9, delays=0.03/0/0.97/0.88, dsn=2.0.0, status=sent (250 OK id=1XpEqC-0002ry-9s)

Nov 14 16:45:00 Debian postfix/qmgr[4544]: ADD9A43436: removed

I also noticed that some other services (like mail command) does not respect this-> vui lòng hiển thị mục nhập
maillog

@masegaloeh Đã cập nhật bài viết của tôi với nhật ký thư
Neel

Câu trả lời:


35

Một số nền tảng

Postfix được thừa hưởng một số tính năng từ sendmail cũ hơn như milter và bí danh. Các tập tin /etc/aliaseslà một phần của aliasesthừa kế và được thực hiện bởi alias_maps. Mặt khác, postfix có virtual_maps/ virtual_alias_mapsđể xử lý bí danh email. Vậy sự khác biệt giữa chúng là gì?

Tham số alias_maps

  • Chỉ được sử dụng cho giao hàng địa phương (8)

  • Theo lớp địa chỉ trong postfix , email sẽ gửi theo địa phương (8) nếu tên miền người nhận được liệt kê trongmydestination

  • Đầu vào tra cứu chỉ là các phần cục bộ từ địa chỉ email đầy đủ (ví dụ: myuser từ myuser@example.com). Nó loại bỏ các phần miền của người nhận.

  • Các kết quả tra cứu có thể chứa một hoặc nhiều điều sau đây:

    • địa chỉ email : email sẽ được chuyển tiếp đến địa chỉ email
    • / file / name : email sẽ được thêm vào / file / name
    • | lệnh : mail được chuyển đến lệnh
    • : bao gồm: / file / name : bao gồm bí danh từ / file / name

Tham số virtual_alias_maps

  • Được sử dụng bởi giao hàng ảo (5)

  • Luôn được gọi lần đầu tiên trước bất kỳ lớp địa chỉ nào khác. Nó không quan tâm cho dù lĩnh vực nhận được liệt kê trong mydestination, virtual_mailbox_domainshay những nơi khác. Nó sẽ ghi đè địa chỉ / bí danh được xác định ở những nơi khác.

  • Đầu vào tra cứu có một số định dạng

    • user @ domain : nó sẽ khớp với user @ domain theo nghĩa đen

    • người dùng : nó sẽ khớp với người dùng @site khi trang web bằng $myorigin, khi trang web được liệt kê trong $mydestinationhoặc khi nó được liệt kê trong $inet_interfaceshoặc $proxy_interfaces. Chức năng này trùng lặp với chức năng của cơ sở dữ liệu bí danh cục bộ (5).

    • @domain : nó sẽ phù hợp với bất kỳ email nào dành cho domainbất kỳ bộ phận địa phương nào

  • Các kết quả tra cứu phải

    • địa chỉ email hợp lệ
    • người dùng không có tên miền. Postfix sẽ nối thêm $myoriginnếu append_at_myoriginđược đặt

Tại sao chúng ta cần / etc / bí danh khi có email trong bản đồ bí danh ảo dường như ghi đè lên nó?

Như bạn có thể thấy ở trên, alias_maps(/ etc / bí danh) có một số tính năng bổ sung (bên cạnh chuyển tiếp) như đường ống để ra lệnh. Nó tương phản với virtual_alias_mapsemail chỉ cần chuyển tiếp.

Mục đích của việc có 2 ánh xạ bí danh riêng biệt này là gì và khi nào chúng ta quyết định khi nào sẽ sử dụng cái gì?

Những alias_mapshạn chế là bạn có thể phân biệt nếu người nhận ban đầu có dạng root@example.com hoặc root@example.net . Cả hai sẽ ánh xạ đến mục nhập gốc alias_maps. Mặt khác, bạn có thể xác định địa chỉ chuyển tiếp khác nhau với virtual_alias_maps.

Tại sao fail2ban (được cấu hình để gửi email đến root @ localhost) trước tiên hãy theo dõi địa chỉ email được cung cấp trong alias_maps (/ etc / aliases /) và sau đó quyết định bỏ qua rằng một khi virtual_alias_maps được thêm vào?

Trước khi virtual_alias_maps được thêm vào : root @ localhost được đặt bí danh bởi alias_mapsvì localhost đã được liệt kê trong mydestination.

Sau khi virtual_alias_maps được xác định : Mục nhập root(trong virtual_alias_maps) không có các phần miền và localhost được liệt kê trong mydestination, vì vậy nó sẽ khớp root me@example.com.

Tại sao tất cả các dịch vụ không đọc các bí danh email được đề cập trong / etc / bí danh và chúng chỉ hoạt động khi các bí danh email được thêm vào trong bản đồ bí danh ảo?

Lệnh mail rootsẽ gửi email đến root. Vì thiếu các phần miền, postfix trivial-viết lại sẽ nối myorigin vào các phần miền. Vì vậy, thư sẽ được gửi đến root @ myorigin .

Trước khi virtual_alias_maps được thêm vào : Thật không may, myoriginkhông được liệt kê trong đó mydestination, vì vậy nó sẽ không bí danh bởi alias_maps.

Sau khi virtual_alias_maps được thêm vào : Mục nhập root(trong virtual_alias_maps) không có các phần miền và myorigin (rõ ràng) giống như myoriginvậy, vì vậy nó sẽ khớp root me@example.com.


1
Trong câu Những alias_mapsnhược điểm là bạn có thể phân biệt được từ có thể có nghĩa là không thể . Nếu không thì tôi không thể hiểu ý nghĩa của nó.
Daniel Böhmer

2
  1. /etc/aliaseschủ yếu là để phân phối cục bộ, ví dụ, thư đến root từ cron, v.v., thật tuyệt khi tách biệt các bí danh cục bộ của bạn, virtual_alias_mapscũng có thể được sử dụng với SQL DB, v.v.

  2. virtual_alias_maps là khi bạn có người dùng ảo (và tên miền ảo), thường không ánh xạ tới người dùng hệ thống, nhưng nếu bạn không có tên miền ảo và rất ít người dùng, loại chức năng đó có thể không cần thiết.

  3. fail2ban không quan tâm, nó chỉ gửi email đến MTA.

  4. Bạn cần phải cụ thể hơn, dịch vụ nào, cách thức và nơi họ gửi thư?


Cảm ơn bạn @NickW vài điều: (1) Đối với Không: 4, lệnh mail là một trong những dịch vụ thực hiện việc này. Ý tôi là nếu / etc / bí danh chủ yếu để phân phối cục bộ cho người dùng cục bộ, mail rootlệnh có nên thực sự thuộc danh mục này không? Tại sao dịch vụ này lại xem xét thông tin trong / etc / bí danh khi giao hàng địa phương? (2) Xem xét những điều này cho kịch bản của tôi, đó có phải là một cách thực hành tốt để người dùng bí danh địa chỉ email được đề cập trong cả hai /etc/aliasescũng như virtual_alias_mapsđể họ làm việc cho tất cả mọi thứ?
Neel

1
1. Ok, lệnh mail nên sử dụng /etc/aliasestheo mặc định, một câu hỏi thực sự ngu ngốc, bạn đã chạy newaliasessau khi cập nhật tệp, phải không? 2. Tôi sẽ nói rằng đó là quá mức cần thiết, nếu mọi người sẽ nhận được thư từ máy cục bộ, sẽ đáng để cấu hình các tập lệnh để sử dụng địa chỉ email thích hợp của họ, theo cách đó, nó sẽ được chuyển qua postfix và được gửi đến đúng đích.
NickW

hi @NickW có, tôi đã xây dựng lại bí danh bằng cách sử dụng newaliasessau khi thay đổi. Điều duy nhất tôi có thể nghĩ tại sao nó không sử dụng bí danh có thể là do cài đặt postfix bổ sung @$domain_namesau người dùng và do đó virtual_alias_mapscần thiết để chuyển hướng các email đó. Tôi đã đọc điều này trong các tài liệu postfix và có lẽ đó là lý do tại sao maillệnh root không hoạt động với aliases: postfix.org/STANDARD_CONFIGURATION_README.html#some_local Dù sao đi nữa, cảm ơn bạn rất nhiều vì đã giúp tôi hiểu rõ hơn về Nick này. Tôi thực sự đánh giá cao nó .. :)
Neel

Rất vui vì đã giúp đỡ :)
NickW
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.