prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Override to use server hostname + IP in outbound headers
  ## What type of PR?
  Enhancement
  
  ## What does this PR do?
  Allows users to set the server IP and hostname in the outgoing "Received" header rather than "PUBLIC_HOSTNAME [PUBLIC_IP]".
  
  ### Related issue(s)
  https://github.com/Mailu/Mailu/issues/191
  
  ## Prerequistes
  Before we can consider review and merge, please make sure the following list is done and checked.
  If an entry in not applicable, you can check it or remove it from the list.
  
  - [x] In case of feature or enhancement: documentation updated accordingly
  - [ ] Unless it's docs or a minor change: add [changelog](https://mailu.io/master/contributors/guide.html#changelog) entry file.
  
  
  </issue>
  <code>
  [start of core/postfix/start.py]
  1 #!/usr/bin/python3
  2 
  3 import os
  4 import glob
  5 import shutil
  6 import multiprocessing
  7 import logging as log
  8 import sys
  9 
  10 from podop   import run_server
  11 from socrate import system, conf
  12 
  13 log.basicConfig(stream=sys.stderr, level=os.environ.get("LOG_LEVEL", "WARNING"))
  14 
  15 def start_podop():
  16     os.setuid(100)
  17     url = "http://" + os.environ["ADMIN_ADDRESS"] + "/internal/postfix/"
  18     # TODO: Remove verbosity setting from Podop?
  19     run_server(0, "postfix", "/tmp/podop.socket", [
  20 		("transport", "url", url + "transport/§"),
  21 		("alias", "url", url + "alias/§"),
  22 		("domain", "url", url + "domain/§"),
  23         ("mailbox", "url", url + "mailbox/§"),
  24         ("recipientmap", "url", url + "recipient/map/§"),
  25         ("sendermap", "url", url + "sender/map/§"),
  26         ("senderaccess", "url", url + "sender/access/§"),
  27         ("senderlogin", "url", url + "sender/login/§")
  28     ])
  29 
  30 def is_valid_postconf_line(line):
  31     return not line.startswith("#") \
  32             and not line == ''
  33 
  34 # Actual startup script
  35 os.environ["FRONT_ADDRESS"] = system.get_host_address_from_environment("FRONT", "front")
  36 os.environ["ADMIN_ADDRESS"] = system.get_host_address_from_environment("ADMIN", "admin")
  37 os.environ["ANTISPAM_MILTER_ADDRESS"] = system.get_host_address_from_environment("ANTISPAM_MILTER", "antispam:11332")
  38 os.environ["LMTP_ADDRESS"] = system.get_host_address_from_environment("LMTP", "imap:2525")
  39 
  40 for postfix_file in glob.glob("/conf/*.cf"):
  41     conf.jinja(postfix_file, os.environ, os.path.join("/etc/postfix", os.path.basename(postfix_file)))
  42 
  43 if os.path.exists("/overrides/postfix.cf"):
  44     for line in open("/overrides/postfix.cf").read().strip().split("\n"):
  45         if is_valid_postconf_line(line):
  46             os.system('postconf -e "{}"'.format(line))
  47 
  48 if os.path.exists("/overrides/postfix.master"):
  49     for line in open("/overrides/postfix.master").read().strip().split("\n"):
  50         if is_valid_postconf_line(line):
  51             os.system('postconf -Me "{}"'.format(line))
  52 
  53 for map_file in glob.glob("/overrides/*.map"):
  54     destination = os.path.join("/etc/postfix", os.path.basename(map_file))
  55     shutil.copyfile(map_file, destination)
  56     os.system("postmap {}".format(destination))
  57     os.remove(destination)
  58 
  59 if "RELAYUSER" in os.environ:
  60     path = "/etc/postfix/sasl_passwd"
  61     conf.jinja("/conf/sasl_passwd", os.environ, path)
  62     os.system("postmap {}".format(path))
  63 
  64 # Run Podop and Postfix
  65 multiprocessing.Process(target=start_podop).start()
  66 os.system("/usr/libexec/postfix/post-install meta_directory=/etc/postfix create-missing")
  67 # Before starting postfix, we need to check permissions on /queue
  68 # in the event that postfix,postdrop id have changed
  69 os.system("postfix set-permissions")
  70 os.system("postfix start-fg")
  71
  [end of core/postfix/start.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/core/postfix/start.py b/core/postfix/start.py
  --- a/core/postfix/start.py
  +++ b/core/postfix/start.py
  @@ -36,6 +36,11 @@
   os.environ["ADMIN_ADDRESS"] = system.get_host_address_from_environment("ADMIN", "admin")
   os.environ["ANTISPAM_MILTER_ADDRESS"] = system.get_host_address_from_environment("ANTISPAM_MILTER", "antispam:11332")
   os.environ["LMTP_ADDRESS"] = system.get_host_address_from_environment("LMTP", "imap:2525")
  +os.environ["OUTCLEAN"] = os.environ["HOSTNAMES"].split(",")[0]
  +try:
  +    os.environ["OUTCLEAN_ADDRESS"] = system.resolve_hostname(os.environ["OUTCLEAN"])
  +except:
  +    os.environ["OUTCLEAN_ADDRESS"] = "10.10.10.10"
   
   for postfix_file in glob.glob("/conf/*.cf"):
       conf.jinja(postfix_file, os.environ, os.path.join("/etc/postfix", os.path.basename(postfix_file)))
  
verification_info: {"golden_diff": "diff --git a/core/postfix/start.py b/core/postfix/start.py\n--- a/core/postfix/start.py\n+++ b/core/postfix/start.py\n@@ -36,6 +36,11 @@\n os.environ[\"ADMIN_ADDRESS\"] = system.get_host_address_from_environment(\"ADMIN\", \"admin\")\n os.environ[\"ANTISPAM_MILTER_ADDRESS\"] = system.get_host_address_from_environment(\"ANTISPAM_MILTER\", \"antispam:11332\")\n os.environ[\"LMTP_ADDRESS\"] = system.get_host_address_from_environment(\"LMTP\", \"imap:2525\")\n+os.environ[\"OUTCLEAN\"] = os.environ[\"HOSTNAMES\"].split(\",\")[0]\n+try:\n+    os.environ[\"OUTCLEAN_ADDRESS\"] = system.resolve_hostname(os.environ[\"OUTCLEAN\"])\n+except:\n+    os.environ[\"OUTCLEAN_ADDRESS\"] = \"10.10.10.10\"\n \n for postfix_file in glob.glob(\"/conf/*.cf\"):\n     conf.jinja(postfix_file, os.environ, os.path.join(\"/etc/postfix\", os.path.basename(postfix_file)))\n", "issue": "Override to use server hostname + IP in outbound headers\n## What type of PR?\r\nEnhancement\r\n\r\n## What does this PR do?\r\nAllows users to set the server IP and hostname in the outgoing \"Received\" header rather than \"PUBLIC_HOSTNAME [PUBLIC_IP]\".\r\n\r\n### Related issue(s)\r\nhttps://github.com/Mailu/Mailu/issues/191\r\n\r\n## Prerequistes\r\nBefore we can consider review and merge, please make sure the following list is done and checked.\r\nIf an entry in not applicable, you can check it or remove it from the list.\r\n\r\n- [x] In case of feature or enhancement: documentation updated accordingly\r\n- [ ] Unless it's docs or a minor change: add [changelog](https://mailu.io/master/contributors/guide.html#changelog) entry file.\r\n\n", "before_files": [{"content": "#!/usr/bin/python3\n\nimport os\nimport glob\nimport shutil\nimport multiprocessing\nimport logging as log\nimport sys\n\nfrom podop   import run_server\nfrom socrate import system, conf\n\nlog.basicConfig(stream=sys.stderr, level=os.environ.get(\"LOG_LEVEL\", \"WARNING\"))\n\ndef start_podop():\n    os.setuid(100)\n    url = \"http://\" + os.environ[\"ADMIN_ADDRESS\"] + \"/internal/postfix/\"\n    # TODO: Remove verbosity setting from Podop?\n    run_server(0, \"postfix\", \"/tmp/podop.socket\", [\n\t\t(\"transport\", \"url\", url + \"transport/\u00a7\"),\n\t\t(\"alias\", \"url\", url + \"alias/\u00a7\"),\n\t\t(\"domain\", \"url\", url + \"domain/\u00a7\"),\n        (\"mailbox\", \"url\", url + \"mailbox/\u00a7\"),\n        (\"recipientmap\", \"url\", url + \"recipient/map/\u00a7\"),\n        (\"sendermap\", \"url\", url + \"sender/map/\u00a7\"),\n        (\"senderaccess\", \"url\", url + \"sender/access/\u00a7\"),\n        (\"senderlogin\", \"url\", url + \"sender/login/\u00a7\")\n    ])\n\ndef is_valid_postconf_line(line):\n    return not line.startswith(\"#\") \\\n            and not line == ''\n\n# Actual startup script\nos.environ[\"FRONT_ADDRESS\"] = system.get_host_address_from_environment(\"FRONT\", \"front\")\nos.environ[\"ADMIN_ADDRESS\"] = system.get_host_address_from_environment(\"ADMIN\", \"admin\")\nos.environ[\"ANTISPAM_MILTER_ADDRESS\"] = system.get_host_address_from_environment(\"ANTISPAM_MILTER\", \"antispam:11332\")\nos.environ[\"LMTP_ADDRESS\"] = system.get_host_address_from_environment(\"LMTP\", \"imap:2525\")\n\nfor postfix_file in glob.glob(\"/conf/*.cf\"):\n    conf.jinja(postfix_file, os.environ, os.path.join(\"/etc/postfix\", os.path.basename(postfix_file)))\n\nif os.path.exists(\"/overrides/postfix.cf\"):\n    for line in open(\"/overrides/postfix.cf\").read().strip().split(\"\\n\"):\n        if is_valid_postconf_line(line):\n            os.system('postconf -e \"{}\"'.format(line))\n\nif os.path.exists(\"/overrides/postfix.master\"):\n    for line in open(\"/overrides/postfix.master\").read().strip().split(\"\\n\"):\n        if is_valid_postconf_line(line):\n            os.system('postconf -Me \"{}\"'.format(line))\n\nfor map_file in glob.glob(\"/overrides/*.map\"):\n    destination = os.path.join(\"/etc/postfix\", os.path.basename(map_file))\n    shutil.copyfile(map_file, destination)\n    os.system(\"postmap {}\".format(destination))\n    os.remove(destination)\n\nif \"RELAYUSER\" in os.environ:\n    path = \"/etc/postfix/sasl_passwd\"\n    conf.jinja(\"/conf/sasl_passwd\", os.environ, path)\n    os.system(\"postmap {}\".format(path))\n\n# Run Podop and Postfix\nmultiprocessing.Process(target=start_podop).start()\nos.system(\"/usr/libexec/postfix/post-install meta_directory=/etc/postfix create-missing\")\n# Before starting postfix, we need to check permissions on /queue\n# in the event that postfix,postdrop id have changed\nos.system(\"postfix set-permissions\")\nos.system(\"postfix start-fg\")\n", "path": "core/postfix/start.py"}]}