Mailu: Admin get 404 with default Rancher 2.x nginx ingress controller

Created on 7 Jul 2019  ยท  7Comments  ยท  Source: Mailu/Mailu

I am using Mailu v1.6 with the default nginx ingress controller on Rancher v2.2.4 rancher/nginx-ingress-controller:0.21.0-rancher1 and I get 404 error code in the routes /admin, /admin/ui and /admin/static.

Nginx Ingress Controller logs

xxx.xxx.108.120 - [xxx.xxx.108.120] - - [07/Jul/2019:04:13:16 +0000] "GET /admin/ui HTTP/1.1" 404 233 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" 739 0.004 [mailu-mailserver-admin-80] 10.42.1.123:80 233 0.004 404 b08371ad6f9c7aef434ef61080f439b61
xxx.xxx.108.120 - [xxx.xxx.108.120] - - [07/Jul/2019:04:13:22 +0000] "GET /admin/static HTTP/1.1" 404 233 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" 717 0.004 [mailu-mailserver-admin-80] 10.42.1.123:80 233 0.004 404 8726de0bfe4f04e7a3f0016a15f71c9d4
xxx.xxx.108.120 - [xxx.xxx.108.120] - - [07/Jul/2019:04:13:23 +0000] "GET /admin HTTP/1.1" 404 233 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" 710 0.004 [mailu-mailserver-admin-80] 10.42.1.123:80 233 0.004 404 6a0bb913e6e99ef1def7111208f2ebef9

Mailu Admin Service logs

xxx.xxx.108.120 - - [07/Jul/2019:04:13:16 +0000] "GET /admin/ui HTTP/1.1" 404 233 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
xxx.xxx.108.120 - - [07/Jul/2019:04:13:22 +0000] "GET /admin/static HTTP/1.1" 404 233 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
xxx.xxx.108.120 - - [07/Jul/2019:04:13:23 +0000] "GET /admin HTTP/1.1" 404 233 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 

admin-ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: mailu-admin-ingress
  namespace: mailu-mailserver
  annotations:
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    certmanager.k8s.io/cluster-issuer: letsencrypt-stage
    ingress.kubernetes.io/permanent-redirect: "https://mail.my-domain.com/admin/ui/"
    ingress.kubernetes.io/follow-redirects: "true"
  labels:
    app: mailu
    role: mail
    tier: backend
spec:
  tls:
  - hosts:
    - "mail.my-domain.com"
    secretName: letsencrypt-certs-all # If unsure how to generate these, check out https://github.com/ployst/docker-letsencrypt
  rules:
  - host: "mail.my-domain.com"
    http:
      paths:
      - path: "/admin"
        backend:
          serviceName: admin
          servicePort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: mailu-admin-ui-ingress
  namespace: mailu-mailserver
  annotations:
    kubernetes.io/tls-acme: "true"
    certmanager.k8s.io/cluster-issuer: letsencrypt-stage
    ingress.kubernetes.io/rewrite-target: "/ui"
    ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header X-Forwarded-Prefix /admin;
  labels:
    app: mailu
    role: mail
    tier: backend
spec:
  tls:
  - hosts:
    - "mail.my-domain.com"
    secretName: letsencrypt-certs-all # If unsure how to generate these, check out https://github.com/ployst/docker-letsencrypt
  rules:
  - host: "mail.my-domain.com"
    http:
      paths:
      - path: "/admin/ui"
        backend:
          serviceName: admin
          servicePort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: mailu-admin-static-ingress
  namespace: mailu-mailserver
  annotations:
    kubernetes.io/tls-acme: "true"
    certmanager.k8s.io/cluster-issuer: letsencrypt-stage
    ingress.kubernetes.io/rewrite-target: "/static"
    ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header X-Forwarded-Prefix /admin;
  labels:
    app: mailu
    role: mail
    tier: backend
spec:
  tls:
  - hosts:
    - "mail.my-domain.com"
    secretName: letsencrypt-certs-all # If unsure how to generate these, check out https://github.com/ployst/docker-letsencrypt
  rules:
  - host: "mail.my-domain.com"
    http:
      paths:
      - path: "/admin/static"
        backend:
          serviceName: admin
          servicePort: 80

Ingress Controller YAML

apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"default-http-backend"},"name":"default-http-backend","namespace":"ingress-nginx"},"spec":{"ports":[{"port":80,"targetPort":8080}],"selector":{"app":"default-http-backend"}}}
  creationTimestamp: "2019-06-06T16:17:10Z"
  labels:
    app: default-http-backend
  name: default-http-backend
  namespace: ingress-nginx
  resourceVersion: "715"
  selfLink: /api/v1/namespaces/ingress-nginx/services/default-http-backend
  uid: 892f687c-8876-11e9-84fe-448a5bd88414
spec:
  clusterIP: 10.43.54.15
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: default-http-backend
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}
apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
  annotations:
    deprecated.daemonset.template.generation: "2"
    field.cattle.io/publicEndpoints: '[{"nodeName":"local:machine-n5m8t","addresses":["xxx.xxx.xxx.xxx"],"port":80,"protocol":"TCP","podName":"ingress-nginx:nginx-ingress-controller-lb8b2","allNodes":false},{"nodeName":"local:machine-n5m8t","addresses":["xxx.xxx.xxx.xxx"],"port":443,"protocol":"TCP","podName":"ingress-nginx:nginx-ingress-controller-lb8b2","allNodes":false},{"nodeName":"local:machine-lp2qt","addresses":["yyy.yyy.yyy.yyy"],"port":80,"protocol":"TCP","podName":"ingress-nginx:nginx-ingress-controller-s85pj","allNodes":false},{"nodeName":"local:machine-lp2qt","addresses":["yyy.yyy.yyy.yyy"],"port":443,"protocol":"TCP","podName":"ingress-nginx:nginx-ingress-controller-s85pj","allNodes":false}]'
    kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"extensions/v1beta1","kind":"DaemonSet","metadata":{"annotations":{},"name":"nginx-ingress-controller","namespace":"ingress-nginx"},"spec":{"selector":{"matchLabels":{"app":"ingress-nginx"}},"template":{"metadata":{"annotations":{"prometheus.io/port":"10254","prometheus.io/scrape":"true"},"labels":{"app":"ingress-nginx"}},"spec":{"affinity":{"nodeAffinity":{"requiredDuringSchedulingIgnoredDuringExecution":{"nodeSelectorTerms":[{"matchExpressions":[{"key":"beta.kubernetes.io/os","operator":"NotIn","values":["windows"]}]}]}}},"containers":[{"args":["/nginx-ingress-controller","--default-backend-service=$(POD_NAMESPACE)/default-http-backend","--configmap=$(POD_NAMESPACE)/nginx-configuration","--tcp-services-configmap=$(POD_NAMESPACE)/tcp-services","--udp-services-configmap=$(POD_NAMESPACE)/udp-services","--annotations-prefix=nginx.ingress.kubernetes.io"],"env":[{"name":"POD_NAME","valueFrom":{"fieldRef":{"fieldPath":"metadata.name"}}},{"name":"POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}}],"image":"rancher/nginx-ingress-controller:0.21.0-rancher1","livenessProbe":{"failureThreshold":3,"httpGet":{"path":"/healthz","port":10254,"scheme":"HTTP"},"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1},"name":"nginx-ingress-controller","ports":[{"containerPort":80,"name":"http"},{"containerPort":443,"name":"https"}],"readinessProbe":{"failureThreshold":3,"httpGet":{"path":"/healthz","port":10254,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1},"securityContext":{"capabilities":{"add":["NET_BIND_SERVICE"],"drop":["ALL"]},"runAsUser":33}}],"hostNetwork":true,"nodeSelector":null,"serviceAccountName":"nginx-ingress-serviceaccount"}}}}'
  creationTimestamp: "2019-06-06T16:17:09Z"
  generation: 2
  labels:
    app: ingress-nginx
  name: nginx-ingress-controller
  namespace: ingress-nginx
  resourceVersion: "5919332"
  selfLink: /apis/apps/v1beta2/namespaces/ingress-nginx/daemonsets/nginx-ingress-controller
  uid: 88d1727c-8876-11e9-84fe-448a5bd88414
spec:
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: ingress-nginx
  template:
    metadata:
      annotations:
        cattle.io/timestamp: "2019-07-03T16:54:01Z"
        field.cattle.io/ports: '[[{"containerPort":80,"dnsName":"nginx-ingress-controller-","name":"http","protocol":"TCP","sourcePort":0},{"containerPort":443,"dnsName":"nginx-ingress-controller-","name":"https","protocol":"TCP","sourcePort":0}]]'
        prometheus.io/port: "10254"
        prometheus.io/scrape: "true"
      creationTimestamp: null
      labels:
        app: ingress-nginx
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: beta.kubernetes.io/os
                operator: NotIn
                values:
                - windows
              - key: name
                operator: NotIn
                values:
                - node-3
      containers:
      - args:
        - /nginx-ingress-controller
        - --default-backend-service=$(POD_NAMESPACE)/default-http-backend
        - --configmap=$(POD_NAMESPACE)/nginx-configuration
        - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
        - --udp-services-configmap=$(POD_NAMESPACE)/udp-services
        - --annotations-prefix=nginx.ingress.kubernetes.io
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        image: rancher/nginx-ingress-controller:0.21.0-rancher1
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /healthz
            port: 10254
            scheme: HTTP
          initialDelaySeconds: 10
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        name: nginx-ingress-controller
        ports:
        - containerPort: 80
          hostPort: 80
          name: http
          protocol: TCP
        - containerPort: 443
          hostPort: 443
          name: https
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /healthz
            port: 10254
            scheme: HTTP
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        resources: {}
        securityContext:
          capabilities:
            add:
            - NET_BIND_SERVICE
            drop:
            - ALL
          procMount: Default
          runAsUser: 33
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      hostNetwork: true
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: nginx-ingress-serviceaccount
      serviceAccountName: nginx-ingress-serviceaccount
      terminationGracePeriodSeconds: 30
  updateStrategy:
    type: OnDelete
status:
  currentNumberScheduled: 2
  desiredNumberScheduled: 2
  numberAvailable: 2
  numberMisscheduled: 0
  numberReady: 2
  observedGeneration: 2

staturesponse_needed

Most helpful comment

Hi There,

The Mailu-Project is currently in a bit of a bind! We are short on man-power, and we need to judge if it is possible for us to put in some work on this issue.

To help with that, we are currently trying to find out which issues are actively keeping users from using Mailu, which issues have someone who want to work on them โ€” and which issues may be less important. These a less important ones could be discarded for the time being, until the project is in a more stable and regular state once again.

In order for us to better assess this, it would be helpful if you could put a reaction on this post (use the :smiley: icon to the top-right).

  • ๐Ÿ‘๏ธ if you need this to be able to use Mailu. Ideally, youโ€™d also be able to test this on your installation, and provide feedback โ€ฆ
  • ๐ŸŽ‰ if you find it a nice bonus, but no deal-breaker
  • ๐Ÿš€ if you want to work on it yourself!
    We want to keep this voting open for 2 weeks from now, so please help out!

All 7 comments

I have this issue too, did you got it running?

Same here, but with ingress-nginx .

I have not achieved that the entire stack fully work, at least the rancher version described above.
The antivirus and the antispam do not work.

Some details that may be useful.

  1. For Webmail the route is not /admin/ui, for deployments in kubernetes according to the configuration, a different subdomain or domain must be defined.
  1. I think part of the problem is that some annotations in the ingress configuration are not compatible with the version of the Rancher nginx-ingress-controller.

Good luck.

With the new Ingress System everything works fine :)

Hi There,

The Mailu-Project is currently in a bit of a bind! We are short on man-power, and we need to judge if it is possible for us to put in some work on this issue.

To help with that, we are currently trying to find out which issues are actively keeping users from using Mailu, which issues have someone who want to work on them โ€” and which issues may be less important. These a less important ones could be discarded for the time being, until the project is in a more stable and regular state once again.

In order for us to better assess this, it would be helpful if you could put a reaction on this post (use the :smiley: icon to the top-right).

  • ๐Ÿ‘๏ธ if you need this to be able to use Mailu. Ideally, youโ€™d also be able to test this on your installation, and provide feedback โ€ฆ
  • ๐ŸŽ‰ if you find it a nice bonus, but no deal-breaker
  • ๐Ÿš€ if you want to work on it yourself!
    We want to keep this voting open for 2 weeks from now, so please help out!

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

Hi There,

we see this issue had only little attention ๐Ÿ˜Ÿ. As much as it pains us: In order to get the current issues a bit more manageable for us, we decided to close it. ๐Ÿ‘‹๐Ÿ‘‹

We hope that no one feels offended by doing so. Should the issue get really pressing in the future, please feel free to re-open it.

Thank you for your patience and understanding, ๐Ÿ™‡

  • Your Mailu Team
Was this page helpful?
0 / 5 - 0 ratings

Related issues

Angedestenebres picture Angedestenebres  ยท  3Comments

hoellen picture hoellen  ยท  4Comments

Thorsten1976 picture Thorsten1976  ยท  4Comments

v1ru535 picture v1ru535  ยท  4Comments

fabiorauber picture fabiorauber  ยท  3Comments