2

I have macOS Server 5.6.1 setup on macOS High Sierra (10.13). It serves as a mail server for my local domain mydomain.com and works correctly.

I have one particular user myuser@mydomain.com setup to have all emails forwarded to an external email address user@otherdomain.com. This was done in the GUI by selecting the user and "edit mail options...", then configuring "Mail should be forwarded" with the address "user@otherdomain.com". It works when the email is originating from a local user. However, emails sent from external sources are not relayed and are silently discarded. There is no bounce message received by the sender. I tried to look through the logs (which are a lot less explicit and easy to consult since the last server update) but to no avail.

So to be clear:

someone@mydomain.com -> myuser@mydomain.com: server forwards to user@otherdomain.com and it works.

stranger@elsewhere.com -> myuser@mydomain.com: does not get forwarded to user@otherdomain.com and stranger@elsewhere.com does not get a bounce message. Message is lost with no trace.

My take on it is that to the server, the email looks like it's being relayed: originator is elsewhere.com, final destination is otherdomain.com, so none are local and relay is denied.

I'd like to know if my configuration is ok, or if I need to configure the server so that otherdomain.com is an acceptable relay. Or is there another way to specify the relay option other than in the GUI? Also, any help as to where to look in the logs for self-help would be appreciated :-).

As an additional note, we've been using macOS servers for quite a while and this used to work fine or previous macOS Server versions.

Let me also add that our macOS server is our main SMTP server. It is self hosted and does not use a relay to send or receive. We send and receive emails from the outside for all our users.

Here is the content of /Library/Logs/amavis.log for an email send from test@ismyemailworking.com -> maxime@mydomain.com (I have replaced the real domain name with mydomain.com)

amavis.log

Sep 12 09:43:21 : loaded base policy bank
Sep 12 09:43:21 : lookup_ip_acl (inet_acl) arr.obj: key="127.0.0.1" matches "127.0.0.1", result=1
Sep 12 09:43:21 : process_request: fileno sock=12, STDIN=0, STDOUT=1
Sep 12 09:43:21 : (17841-12) SMTP> 220 [127.0.0.1] ESMTP amavisd-new service ready
Sep 12 09:43:21 : (17841-12) SMTP< EHLO ra.mydomain.com\r\n
Sep 12 09:43:21 : (17841-12) ESMTP> 250-[127.0.0.1]
Sep 12 09:43:21 : (17841-12) ESMTP> 250-VRFY
Sep 12 09:43:21 : (17841-12) ESMTP> 250-PIPELINING
Sep 12 09:43:21 : (17841-12) ESMTP> 250-SIZE
Sep 12 09:43:21 : (17841-12) ESMTP> 250-ENHANCEDSTATUSCODES
Sep 12 09:43:21 : (17841-12) ESMTP> 250-8BITMIME
Sep 12 09:43:21 : (17841-12) ESMTP> 250-SMTPUTF8
Sep 12 09:43:21 : (17841-12) ESMTP> 250-DSN
Sep 12 09:43:21 : (17841-12) ESMTP> 250 XFORWARD NAME ADDR PORT PROTO HELO IDENT SOURCE
Sep 12 09:43:21 : (17841-12) ESMTP< XFORWARD ADDR=108.60.212.145 PORT=58321\r\n
Sep 12 09:43:21 : (17841-12) ESMTP> 250 2.5.0 Ok XFORWARD
Sep 12 09:43:21 : (17841-12) ESMTP< XFORWARD PROTO=ESMTP HELO=IsMyEmailWorking.com IDENT=4D7D8101A79E19 SOURCE=REMOTE\r\n
Sep 12 09:43:21 : (17841-12) ESMTP> 250 2.5.0 Ok XFORWARD
Sep 12 09:43:21 : (17841-12) ESMTP< MAIL FROM:<test@ismyemailworking.com> SIZE=1667\r\n
Sep 12 09:43:21 : (17841-12) check_mail_begin_task: task_count=12
Sep 12 09:43:21 : (17841-12) lookup_ip_acl (client_ipaddr_policy) arr.obj: key="108.60.212.145", no match
Sep 12 09:43:21 : (17841-12) lookup [debug_sender] => undef, "test@ismyemailworking.com" does not match
Sep 12 09:43:21 : (17841-12) ESMTP> 250 2.1.0 Sender <test@ismyemailworking.com> OK
Sep 12 09:43:21 : (17841-12) ESMTP< RCPT TO:<maxime@mydomain.com> ORCPT=rfc822;maxime@mydomain.com\r\n
Sep 12 09:43:21 : (17841-12) lookup => undef, "maxime@mydomain.com", no lookup tables
Sep 12 09:43:21 : (17841-12) ESMTP> 250 2.1.5 Recipient <maxime@mydomain.com> OK
Sep 12 09:43:21 : (17841-12) ESMTP< DATA\r\n
Sep 12 09:43:21 : (17841-12) ESMTP [127.0.0.1]:10024 /Library/Server/Mail/Data/scanner/amavis/tmp/amavis-20180912T092456-17841-Oll0OnWz: <test@ismyemailworking.com> -> <maxime@mydomain.com> SIZE=1667 Received: from ra.mydomain.com ([127.0.0.1]) by localhost (ra.mydomain.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP for <maxime@mydomain.com>; Wed, 12 Sep 2018 09:43:21 -0400 (EDT)
Sep 12 09:43:21 : (17841-12) ESMTP> 354 End data with <CR><LF>.<CR><LF>
Sep 12 09:43:21 : (17841-12) ESMTP< .<CR><LF>
Sep 12 09:43:21 : (17841-12) smtp connection cache, dt: 170.1, state: 0
Sep 12 09:43:21 : (17841-12) body type (8bit-MIMEtransport): unlabeled, good (h=0, b=0)
Sep 12 09:43:21 : (17841-12) body hash: ac39b4212bd3394f8d54c75b25502dd8
Sep 12 09:43:21 : (17841-12) lookup_ip_acl (public_nets) arr.obj: key="127.0.0.1" matches "!127.0.0.0/8", result=0
Sep 12 09:43:21 : (17841-12) lookup_ip_acl (public_nets) arr.obj: key="108.60.212.145" matches "::ffff:0:0/96", result=1
Sep 12 09:43:21 : (17841-12) trace: ESMTP://[127.0.0.1]:62457 < ESMTP://[108.60.212.145]:58321
Sep 12 09:43:21 : (17841-12) Original mail size: 1667; quota set to: 833500 bytes (fmin=5, fmax=500, qmin=102400, qmax=314572800)
Sep 12 09:43:21 : (17841-12) Checking: oZoLvM1Iy9pS [108.60.212.145] <test@ismyemailworking.com> -> <maxime@mydomain.com>
Sep 12 09:43:21 : (17841-12) 2822.From: <test@ismyemailworking.com>
Sep 12 09:43:21 : (17841-12) lookup [local_domains] => true,  "maxime@mydomain.com" matches, result="OK", matching_key="mydomain.com"
Sep 12 09:43:21 : (17841-12) lookup [bypass_virus_checks] => undef, "maxime@mydomain.com" does not match
Sep 12 09:43:21 : (17841-12) lookup [bypass_banned_checks] => undef, "maxime@mydomain.com" does not match
Sep 12 09:43:21 : (17841-12) lookup [bypass_spam_checks] => undef, "maxime@mydomain.com" does not match
Sep 12 09:43:21 : (17841-12) Extracting mime components from a string
Sep 12 09:43:21 : (17841-12) Issued a new file name: p001
Sep 12 09:43:21 : (17841-12) Charging 802 bytes to remaining quota 833500 (out of 833500, (0%)) - by mime_decode
Sep 12 09:43:21 : (17841-12) p001 1 Content-Type: text/plain, QP, size: 802, SHA1 digest: 0341da747d70d9de809f5c7289b420451e013c38
Sep 12 09:43:21 : (17841-12) inspect_dsn: not a bounce
Sep 12 09:43:21 : (17841-12) decode_parts: level=1, #parts=1 : p001
Sep 12 09:43:21 : (17841-12) lookup [map_full_type_to_short_type] => true,  "ASCII text, with very long lines, with CRLF, LF line terminators" matches, result="asc", matching_key="(?^i:^(ASCII|text)\\b)"
Sep 12 09:43:21 : (17841-12) File-type of p001: ASCII text, with very long lines, with CRLF, LF line terminators; (asc)
Sep 12 09:43:21 : (17841-12) decompose_part: p001 - atomic
Sep 12 09:43:21 : (17841-12) lookup [bypass_header_checks] => undef, "maxime@mydomain.com" does not match
Sep 12 09:43:21 : (17841-12) lookup [bypass_header_checks] => undef, "maxime@mydomain.com" does not match
Sep 12 09:43:21 : (17841-12) Checking for banned types and filenames
Sep 12 09:43:21 : (17841-12) lookup [banned_filename], 1 matches for "maxime@mydomain.com", results: "(constant:DEFAULT)"=>"DEFAULT"
Sep 12 09:43:21 : (17841-12) collect banned table[0]: maxime@mydomain.com, tables: DEFAULT=>Amavis::Lookup::RE=ARRAY(0x7fa31fa04be0)
Sep 12 09:43:21 : (17841-12) starting banned checks - traversing message structure tree
Sep 12 09:43:21 : (17841-12) check_for_banned (p001) text/plain,.asc
Sep 12 09:43:21 : (17841-12) lookup [check_bann:maxime@mydomain.com] => undef, ["text/plain",".asc"] does not match
Sep 12 09:43:21 : (17841-12) lookup [banned_namepath_re] => undef, "P=p001\tL=1\tM=text/plain\tT=asc" does not match
Sep 12 09:43:21 : (17841-12) p.path maxime@mydomain.com: "P=p001,L=1,M=text/plain,T=asc"
Sep 12 09:43:21 : (17841-12) banned check: any=0, all=N (1)
Sep 12 09:43:21 : (17841-12) lookup [keep_decoded_original] => true,  "MAIL" matches, result="1", matching_key="(?^:^MAIL$)"
Sep 12 09:43:21 : (17841-12) Issued a new file name: p002
Sep 12 09:43:21 : (17841-12) presenting full original message to scanners as /Library/Server/Mail/Data/scanner/amavis/tmp/amavis-20180912T092456-17841-Oll0OnWz/parts/p002
Sep 12 09:43:21 : (17841-12) run_av Using (ClamAV-clamd): (code) CONTSCAN /Library/Server/Mail/Data/scanner/amavis/tmp/amavis-20180912T092456-17841-Oll0OnWz/parts\n
Sep 12 09:43:21 : (17841-12) ClamAV-clamd: Connecting to socket  /Library/Server/Mail/Data/scanner/amavis/clamd
Sep 12 09:43:21 : (17841-12) new socket by IO::Socket::UNIX to /Library/Server/Mail/Data/scanner/amavis/clamd, timeout set to 10
Sep 12 09:43:21 : (17841-12) ClamAV-clamd: Sending CONTSCAN /Library/Server/Mail/Data/scanner/amavis/tmp/amavis-20180912T092456-17841-Oll0OnWz/parts\n to socket /Library/Server/Mail/Data/scanner/amavis/clamd
Sep 12 09:43:21 : (17841-12) rw_loop read: got eof
Sep 12 09:43:21 : (17841-12) run_av (ClamAV-clamd) result: /Library/Server/Mail/Data/scanner/amavis/tmp/amavis-20180912T092456-17841-Oll0OnWz/parts: OK\n
Sep 12 09:43:21 : (17841-12) run_av (ClamAV-clamd): CLEAN
Sep 12 09:43:21 : (17841-12) run_av (ClamAV-clamd) result: clean
Sep 12 09:43:21 : (17841-12) wbl: checking sender <test@ismyemailworking.com>
Sep 12 09:43:21 : (17841-12) lookup [blacklist_recip<maxime@mydomain.com>] => undef, "maxime@mydomain.com" does not match
Sep 12 09:43:21 : (17841-12) lookup [blacklist_sender<test@ismyemailworking.com>,blacklist_sender] => undef, "test@ismyemailworking.com" does not match
Sep 12 09:43:21 : (17841-12) lookup [whitelist_recip<maxime@mydomain.com>] => undef, "maxime@mydomain.com" does not match
Sep 12 09:43:21 : (17841-12) lookup [whitelist_sender<test@ismyemailworking.com>,whitelist_sender] => undef, "test@ismyemailworking.com" does not match
Sep 12 09:43:21 : (17841-12) lookup [score_recip<maxime@mydomain.com>,score_sender], 1 matches for "maxime@mydomain.com", results: "."=>[Amavis::Lookup::RE=ARRAY(0x7fa31ef4e918),{yahoo-dev-null@yahoo-inc.com=>"-3",amavis-user-admin@lists.sourceforge.net=>"-3",cert-advisory@us-cert.gov=>"-3",ntbugtraq@listserv.ntbugtraq.com=>"-3",ca+envelope@sendmail.org=>"-3",nobody@cert.org=>"-3",owner-sendmail-announce@lists.sendmail.org=>"-3",clusternews@linuxnetworx.com=>"-3",lvs-users-admin@linuxvirtualserver.org=>"-3",sendmail-announce-request@lists.sendmail.org=>"-3",owner-alert@iss.net=>"-3",rt-users-admin@lists.fsck.com=>"-3",owner-postfix-users@postfix.org=>"-3",mailman-announce-admin@python.org=>"-3",emailnews@genomeweb.com=>"-5",owner-postfix-announce@postfix.org=>"-3",donotreply@sendmail.org=>"-3",sender@example.net=>"3",ietf-123-owner@loki.ietf.org=>"-3",owner-technews@postel.acm.org=>"-3",returns.groups.yahoo.com=>"-3",cvs-commits-list-admin@gnome.org=>"-3",securityfocus.com=>"-3",.example.net=>"1",notification-return@lists.sophos.com=>"-3",security-alerts@linuxsecurity.com=>"-3",owner-textbreakingnews@cnnimail12.cnn.com=>"-5",clp-request@comp.nus.edu.sg=>"-3",noreply@freshmeat.net=>"-3",surveys-errors@lists.nua.ie=>"-3",spamassassin.apache.org=>"-3",slashdot@slashdot.org=>"-3",amavis-user-bounces@lists.sourceforge.net=>"-3"}]
Sep 12 09:43:21 : (17841-12) lookup [score_sender<test@ismyemailworking.com>] => undef, "test@ismyemailworking.com" does not match
Sep 12 09:43:21 : (17841-12) calling SA parse (0), SA vers 3.4.1, 3.004001, data as STRING_REF, recips_ind [0], user: "_amavisd"
Sep 12 09:43:21 : (17841-12) CALLING SA check (0)
Sep 12 09:43:21 : (17841-12) _WARN: bayes: cannot open bayes databases /Library/Server/Mail/Data/scanner/amavis/.spamassassin/bayes_* R/O: tie failed: Permission denied
Sep 12 09:43:21 : (17841-12) DONE SA check (0)
Sep 12 09:43:21 : (17841-12) spam_scan: score=1.272 autolearn=no autolearn_force=no tests=[RDNS_NONE=1.274,SPF_HELO_PASS=-0.001,SPF_PASS=-0.001] recips=0
Sep 12 09:43:21 : (17841-12) lookup [spam_tag_level] => true,  "maxime@mydomain.com" matches, result="-999", matching_key="(constant:-999)"
Sep 12 09:43:21 : (17841-12) lookup [spam_tag2_level] => true,  "maxime@mydomain.com" matches, result="5", matching_key="(constant:5)"
Sep 12 09:43:21 : (17841-12) lookup [spam_tag3_level] => undef, "maxime@mydomain.com" does not match
Sep 12 09:43:21 : (17841-12) lookup [spam_kill_level] => true,  "maxime@mydomain.com" matches, result="6.9", matching_key="(constant:6.9)"
Sep 12 09:43:21 : (17841-12) do_notify_and_quar: ccat=CleanTag (1,1) ("1,1":CleanTag, "1":Clean, "0":CatchAll) ccat_block=(), qar_mth=
Sep 12 09:43:21 : (17841-12) skip admin notification, no administrators
Sep 12 09:43:21 : (17841-12) lookup [forward_method] => true,  "maxime@mydomain.com" matches, result="smtp:[127.0.0.1]:10025", matching_key="(opaque:smtp:[127.0.0.1]:10025)"
Sep 12 09:43:21 : (17841-12) delivery method is 1, recips: maxime@mydomain.com
Sep 12 09:43:21 : (17841-12) lookup [spam_tag_level] => true,  "maxime@mydomain.com" matches, result="-999", matching_key="(constant:-999)"
Sep 12 09:43:21 : (17841-12) lookup [spam_tag2_level] => true,  "maxime@mydomain.com" matches, result="5", matching_key="(constant:5)"
Sep 12 09:43:21 : (17841-12) lookup [spam_subject_tag] => undef, "maxime@mydomain.com" does not match
Sep 12 09:43:21 : (17841-12) headers CLUSTERING: NEW CLUSTER <maxime@mydomain.com>: score=1.272, tag=1, tag2=0, local=1, bl=, s=, mangle=
Sep 12 09:43:21 : (17841-12) spam-tag, <test@ismyemailworking.com> -> <maxime@mydomain.com>, No, score=1.272 tagged_above=-999 required=5 tests=[RDNS_NONE=1.274, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=no autolearn_force=no
Sep 12 09:43:21 : (17841-12) about to connect to smtp:[127.0.0.1]:10025, oZoLvM1Iy9pS FWD from <test@ismyemailworking.com> -> <maxime@mydomain.com>
Sep 12 09:43:21 : (17841-12) smtp session: setting up a new session
Sep 12 09:43:21 : (17841-12) new socket using IO::Socket::INET6 to [127.0.0.1]:10025, timeout 35
Sep 12 09:43:21 : (17841-12) smtp greeting: 220 ra.mydomain.com ESMTP Postfix, dt: 34.1 ms
Sep 12 09:43:21 : (17841-12) smtp cmd> EHLO localhost
Sep 12 09:43:21 : (17841-12) smtp resp to EHLO: 250 ra.mydomain.com\nPIPELINING\nSIZE 52428800\nVRFY\nETRN\nAUTH LOGIN PLAIN CRAM-MD5 DIGEST-MD5\nENHANCEDSTATUSCODES\n8BITMIME\nDSN\nSMTPUTF8\nBINARYMIME\nCHUNKING
Sep 12 09:43:21 : (17841-12) AUTH not needed, user='', MTA offers 'LOGIN PLAIN CRAM-MD5 DIGEST-MD5'
Sep 12 09:43:21 : (17841-12) smtp cmd> MAIL FROM:<test@ismyemailworking.com> BODY=7BIT
Sep 12 09:43:21 : (17841-12) smtp cmd> RCPT TO:<maxime@mydomain.com> ORCPT=rfc822;maxime@mydomain.com
Sep 12 09:43:21 : (17841-12) smtp cmd> DATA
Sep 12 09:43:21 : (17841-12) smtp resp to MAIL (pip): 250 2.1.0 Ok
Sep 12 09:43:21 : (17841-12) smtp resp to RCPT (pip) (<maxime@mydomain.com>): 250 2.1.5 Ok
Sep 12 09:43:21 : (17841-12) smtp resp to DATA: 354 End data with <CR><LF>.<CR><LF>
Sep 12 09:43:21 : (17841-12) smtp cmd> QUIT
Sep 12 09:43:21 : (17841-12) smtp resp to data-dot (<maxime@mydomain.com>): 250 2.0.0 Ok: queued as E53BE101A79E1F, dt: 53.2 ms
Sep 12 09:43:21 : (17841-12) Amavis::Out::SMTP::Session close, disconnecting
Sep 12 09:43:21 : (17841-12) oZoLvM1Iy9pS FWD from <test@ismyemailworking.com> -> <maxime@mydomain.com>, BODY=7BIT 250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as E53BE101A79E1F
Sep 12 09:43:22 : (17841-12) lookup [spam_dsn_cutoff_level_bysender] => true,  "test@ismyemailworking.com" matches, result="10", matching_key="(constant:10)"
Sep 12 09:43:22 : (17841-12) notif=N, suppressed=0, ndn_needed=0, exit=0, 250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as E53BE101A79E1F
Sep 12 09:43:22 : (17841-12) status counters: InMsgsStatus{Relayed,RelayedUntagged,RelayedUntaggedInbound}
Sep 12 09:43:22 : (17841-12) Passed CLEAN {RelayedInbound}, [108.60.212.145]:58321 [108.60.212.145] <test@ismyemailworking.com> -> <maxime@mydomain.com>, Queue-ID: 4D7D8101A79E19, Message-ID: <98956e1a1990360f@82216d767f7bdb31>, mail_id: oZoLvM1Iy9pS, Hits: 1.272, size: 1667, queued_as: E53BE101A79E1F, 499 ms
Sep 12 09:43:22 : (17841-12) TIMING-SA total 280 ms - parse: 0.84 (0.3%), extract_message_metadata: 18 (6.3%), get_uri_detail_list: 0.98 (0.4%), tests_pri_-1000: 2.6 (0.9%), tests_pri_-950: 0.68 (0.2%), tests_pri_-900: 0.76 (0.3%), tests_pri_-400: 0.60 (0.2%), tests_pri_0: 244 (86.9%), check_spf: 110 (39.1%), poll_dns_idle: 87 (31.0%), check_dkim_adsp: 73 (25.9%), check_pyzor: 0.14 (0.0%), tests_pri_500: 3.0 (1.1%), get_report: 0.47 (0.2%)
Sep 12 09:43:22 : (17841-12) sending SMTP response: "250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as E53BE101A79E1F"
Sep 12 09:43:22 : (17841-12) ESMTP> 250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as E53BE101A79E1F
Sep 12 09:43:22 : (17841-12) TempDir::strip: /Library/Server/Mail/Data/scanner/amavis/tmp/amavis-20180912T092456-17841-Oll0OnWz
Sep 12 09:43:22 : (17841-12) rmdir_recursively: /Library/Server/Mail/Data/scanner/amavis/tmp/amavis-20180912T092456-17841-Oll0OnWz/parts, excl=1
Sep 12 09:43:22 : (17841-12) size: 1667, TIMING [total 506 ms] - SMTP greeting: 10 (2%)2, SMTP EHLO: 6 (1%)3, SMTP pre-MAIL: 3.2 (1%)4, SMTP MAIL: 2.4 (0%)4, SMTP pre-DATA-flush: 6 (1%)5, SMTP DATA: 0.7 (0%)5, check_init: 0.8 (0%)6, digest_hdr: 0.4 (0%)6, digest_body_dkim: 1.2 (0%)6, collect_info: 2.8 (1%)7, mime_decode: 11 (2%)9, get-file-type1: 24 (5%)13, parts_decode: 0.8 (0%)14, check_header: 1.5 (0%)14, AV-scan-1: 18 (4%)17, spam-wb-list: 5 (1%)18, SA msg read: 0.4 (0%)19, SA parse: 2.0 (0%)19, SA check: 278 (55%)74, decide_mail_destiny: 6 (1%)75, notif-quar: 0.8 (0%)75, fwd-connect: 45 (9%)84, fwd-mail-pip: 4.5 (1%)85, fwd-rcpt-pip: 0.7 (0%)85, fwd-data-chkpnt: 0.0 (0%)85, write-header: 0.8 (0%)85, fwd-data-contents: 0.1 (0%)85, fwd-end-chkpnt: 57 (11%)97, prepare-dsn: 4.7 (1%)97, report: 3.6 (1%)98, main_log_entry: 3.5 (1%)99, update_snmp: 1.3 (0%)99, SMTP pre-response: 0.2 (0%)99, SMTP response: 1.3 (0%)99, unlink-2-files: 2.0 (0%)100, rundown: 0.7 (0%)100
Sep 12 09:43:22 : (17841-12) ESMTP< QUIT\r\n
Sep 12 09:43:22 : (17841-12) ESMTP> 221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel
Sep 12 09:43:22 : (17841-12) SMTP session over, timer stopped
Sep 12 09:43:22 : (17841-12) load: 6 %, total idle 1042.805 s, busy 62.278 s
  • Comments are not for extended discussion; this conversation has been moved to chat. – bmike Sep 13 '18 at 0:11
  • I asked a mod to move to chat so I could help explain stuff without clogging the chat. Click on the link above. @JBis me to respond :) – JBis Sep 13 '18 at 0:15

You must log in to answer this question.

Browse other questions tagged .