Office 365 Exchange, открытый ретранслятор по умолчанию?

У нас есть API, который отправляет электронную почту. Я пытался настроить Exchange O365, чтобы сервер API мог отправлять электронную почту без аутентификации. Я внес некоторые изменения и протестировал, и это сработало, отлично! Но потом я протестировал с другого сервера, и он все еще работал. Ой. Я отменил все внесенные мной изменения, поэтому он должен вернуться в состояние развертывания, а реле по-прежнему работает.

Конечно, этого не ожидали, я что-то пропустил?

Шаги, которые я взял:

  1. Центр администрирования Exchange> Защита> Фильтр подключений> Разрешенный IP-адрес: GET, HEAD, LIST должны быть ограничены внутренней сетью. Я придумал: include modules / * ....

    У меня есть развертывание kubernetes, которое требует следующей конфигурации:

    • POST должен быть разрешен из любого источника.
    • GET, HEAD, LIST должны быть ограничены до интрасеть.

    Я придумал:

    include modules/*.conf;    
    worker_processes  1;
    
    error_log  /dev/stdout info;
    
    events {
        worker_connections  1024;}
    
    http {
            include       mime.types;
            default_type  application/octet-stream;
            log_format    main '$http_x_forwarded_for - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
            access_log    /dev/stdout main;
            sendfile      on;
            keepalive_timeout  65;
    
        server {
            listen       8080;
            server_name  localhost;
            port_in_redirect off;
    
            location / {
                root   html;
                index  index.html;
            }
    
            error_page  403 /403.html;
            error_page  404 /404.html;
            error_page  500 /500.html;
            error_page  502 /502.html;
            error_page  503 /503.html;
            error_page  504 /504.html;
        }
    }
    
    if ($request_method != POST) { 
        limit_except GET DELETE PUT{
             allow 10.0.0.0/8;
             deny all; 
        } 
    }
    

    Но я все еще могу ПОЛУЧИТЬ из внешней сети

0
задан 5 June 2018 в 00:28
2 ответа

Я бы не стал использовать "если" по причине производительности и по другим причинам.

Что-то вроде этого могло бы быть лучше, если бы вы могли разделить свои URL таким образом. Ключом является limit_except. Есть шанс, что у меня есть параметры в обратном порядке (swap GET с POST) и "deny all" может потребоваться пересмотреть, но эта общая идея должна помочь решить проблему. Я обновлю ответ, основываясь на любых комментариях.

location /post/service {
  root html;
  index  index.html;
  // OR proxy_pass http://whatever;

  // ALLOW POST
  limit_except GET {
    deny all;
  }
}

location / {
  root html;
  index  index.html;
  // OR proxy_pass http://whatever;

  // ALLOW GET
  limit_except POST {
    deny all;
  }
}
0
ответ дан 5 December 2019 в 05:57

Теги

Похожие вопросы