diff options
Diffstat (limited to 'python-mail-parser.spec')
-rw-r--r-- | python-mail-parser.spec | 912 |
1 files changed, 912 insertions, 0 deletions
diff --git a/python-mail-parser.spec b/python-mail-parser.spec new file mode 100644 index 0000000..dfc22dd --- /dev/null +++ b/python-mail-parser.spec @@ -0,0 +1,912 @@ +%global _empty_manifest_terminate_build 0 +Name: python-mail-parser +Version: 3.15.0 +Release: 1 +Summary: Wrapper for email standard library +License: Apache License, Version 2.0 +URL: https://github.com/SpamScope/mail-parser +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/2b/3d/7f096230c4b61857c7682dc5497000a987b5f7e8376f54f0a5ed73e2cc3d/mail-parser-3.15.0.tar.gz +BuildArch: noarch + +Requires: python3-simplejson +Requires: python3-six +Requires: python3-ipaddress + +%description +[](https://badge.fury.io/py/mail-parser) +[](https://travis-ci.org/SpamScope/mail-parser) +[](https://coveralls.io/github/SpamScope/mail-parser?branch=develop) +[](https://bettercodehub.com/) +[](https://microbadger.com/images/fmantuano/spamscope-mail-parser "Get your own image badge on microbadger.com") + + + +# mail-parser + +mail-parser is not only a wrapper for [email](https://docs.python.org/2/library/email.message.html) Python Standard Library. +It give you an easy way to pass from raw mail to Python object that you can use in your code. +It's the key module of [SpamScope](https://github.com/SpamScope/spamscope). + +mail-parser can parse Outlook email format (.msg). To use this feature, you need to install `libemail-outlook-message-perl` package. For Debian based systems: + +``` +$ apt-get install libemail-outlook-message-perl +``` + +For more details: + +``` +$ apt-cache show libemail-outlook-message-perl +``` + +mail-parser supports Python 3. + + +# Apache 2 Open Source License +mail-parser can be downloaded, used, and modified free of charge. It is available under the Apache 2 license. + +If you want support the project: + + +[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VEPXYP745KJF2) + + + + + + +# mail-parser on Web + - [Splunk app](https://splunkbase.splunk.com/app/4129/) + - [FreeBSD port](https://www.freshports.org/mail/py-mail-parser/) + - [Arch User Repository](https://aur.archlinux.org/packages/mailparser/) + + +# Description + +mail-parser takes as input a raw email and generates a parsed object. The properties of this object are the same name of +[RFC headers](https://www.iana.org/assignments/message-headers/message-headers.xhtml): + + - bcc + - cc + - date + - delivered_to + - from\_ (not `from` because is a keyword of Python) + - message_id + - received + - reply_to + - subject + - to + +There are other properties to get: + - body + - body html + - body plain + - headers + - attachments + - sender IP address + - to domains + - timezone + +The `attachments` property is a list of objects. Every object has the following keys: + - binary: it's true if the attachment is a binary + - charset + - content_transfer_encoding + - content-disposition + - content-id + - filename + - mail_content_type + - payload: attachment payload in base64 + +To get custom headers you should replace "-" with "\_". +Example for header `X-MSMail-Priority`: + +``` +$ mail.X_MSMail_Priority +``` + +The `received` header is parsed and splitted in hop. The fields supported are: + - by + - date + - date_utc + - delay (between two hop) + - envelope_from + - envelope_sender + - for + - from + - hop + - with + + +mail-parser can detect defect in mail: + - [defects](https://docs.python.org/2/library/email.message.html#email.message.Message.defects): mail with some not compliance RFC part + +All properties have a JSON and raw property that you can get with: + - name_json + - name_raw + +Example: + +``` +$ mail.to (Python object) +$ mail.to_json (JSON) +$ mail.to_raw (raw header) +``` + +The command line tool use the JSON format. + +## Defects +These defects can be used to evade the antispam filter. An example are the mails with a malformed boundary that can hide a not legitimate epilogue (often malware). +This library can take these epilogues. + + +# Authors + +## Main Author +**Fedele Mantuano**: [LinkedIn](https://www.linkedin.com/in/fmantuano/) + + +# Installation + +Clone repository + +``` +git clone https://github.com/SpamScope/mail-parser.git +``` + +and install mail-parser with `setup.py`: + +``` +$ cd mail-parser + +$ python setup.py install +``` + +or use `pip`: + +``` +$ pip install mail-parser +``` + +# Usage in a project + +Import `mailparser` module: + +``` +import mailparser + +mail = mailparser.parse_from_bytes(byte_mail) +mail = mailparser.parse_from_file(f) +mail = mailparser.parse_from_file_msg(outlook_mail) +mail = mailparser.parse_from_file_obj(fp) +mail = mailparser.parse_from_string(raw_mail) +``` + +Then you can get all parts + +``` +mail.attachments: list of all attachments +mail.body +mail.date: datetime object in UTC +mail.defects: defect RFC not compliance +mail.defects_categories: only defects categories +mail.delivered_to +mail.from_ +mail.get_server_ipaddress(trust="my_server_mail_trust") +mail.headers +mail.mail: tokenized mail in a object +mail.message: email.message.Message object +mail.message_as_string: message as string +mail.message_id +mail.received +mail.subject +mail.text_plain: only text plain mail parts in a list +mail.text_html: only text html mail parts in a list +mail.text_not_managed: all not managed text (check the warning logs to find content subtype) +mail.to +mail.to_domains +mail.timezone: returns the timezone, offset from UTC +mail.mail_partial: returns only the mains parts of emails +``` + +It's possible to write the attachments on disk with the method: + +``` +mail.write_attachments(base_path) +``` + +# Usage from command-line + +If you installed mailparser with `pip` or `setup.py` you can use it with command-line. + +These are all swithes: + +``` +usage: mailparser [-h] (-f FILE | -s STRING | -k) + [-l {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}] [-j] [-b] + [-a] [-r] [-t] [-dt] [-m] [-u] [-c] [-d] [-o] + [-i Trust mail server string] [-p] [-z] [-v] + +Wrapper for email Python Standard Library + +optional arguments: + -h, --help show this help message and exit + -f FILE, --file FILE Raw email file (default: None) + -s STRING, --string STRING + Raw email string (default: None) + -k, --stdin Enable parsing from stdin (default: False) + -l {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}, --log-level {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET} + Set log level (default: WARNING) + -j, --json Show the JSON of parsed mail (default: False) + -b, --body Print the body of mail (default: False) + -a, --attachments Print the attachments of mail (default: False) + -r, --headers Print the headers of mail (default: False) + -t, --to Print the to of mail (default: False) + -dt, --delivered-to Print the delivered-to of mail (default: False) + -m, --from Print the from of mail (default: False) + -u, --subject Print the subject of mail (default: False) + -c, --receiveds Print all receiveds of mail (default: False) + -d, --defects Print the defects of mail (default: False) + -o, --outlook Analyze Outlook msg (default: False) + -i Trust mail server string, --senderip Trust mail server string + Extract a reliable sender IP address heuristically + (default: None) + -p, --mail-hash Print mail fingerprints without headers (default: + False) + -z, --attachments-hash + Print attachments with fingerprints (default: False) + -sa, --store-attachments + Store attachments on disk (default: False) + -ap ATTACHMENTS_PATH, --attachments-path ATTACHMENTS_PATH + Path where store attachments (default: /tmp) + -v, --version show program's version number and exit + +It takes as input a raw mail and generates a parsed object. +``` + +Example: + +```shell +$ mailparser -f example_mail -j +``` + +This example will show you the tokenized mail in a JSON pretty format. + +From [raw mail](https://gist.github.com/fedelemantuano/5dd702004c25a46b2bd60de21e67458e) to +[parsed mail](https://gist.github.com/fedelemantuano/e958aa2813c898db9d2d09469db8e6f6). + + +# Exceptions + +Exceptions hierarchy of mail-parser: + +``` +MailParserError: Base MailParser Exception +| +\── MailParserOutlookError: Raised with Outlook integration errors +| +\── MailParserEnvironmentError: Raised when the environment is not correct +| +\── MailParserOSError: Raised when there is an OS error +| +\── MailParserReceivedParsingError: Raised when a received header cannot be parsed +``` + + + + +%package -n python3-mail-parser +Summary: Wrapper for email standard library +Provides: python-mail-parser +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-mail-parser +[](https://badge.fury.io/py/mail-parser) +[](https://travis-ci.org/SpamScope/mail-parser) +[](https://coveralls.io/github/SpamScope/mail-parser?branch=develop) +[](https://bettercodehub.com/) +[](https://microbadger.com/images/fmantuano/spamscope-mail-parser "Get your own image badge on microbadger.com") + + + +# mail-parser + +mail-parser is not only a wrapper for [email](https://docs.python.org/2/library/email.message.html) Python Standard Library. +It give you an easy way to pass from raw mail to Python object that you can use in your code. +It's the key module of [SpamScope](https://github.com/SpamScope/spamscope). + +mail-parser can parse Outlook email format (.msg). To use this feature, you need to install `libemail-outlook-message-perl` package. For Debian based systems: + +``` +$ apt-get install libemail-outlook-message-perl +``` + +For more details: + +``` +$ apt-cache show libemail-outlook-message-perl +``` + +mail-parser supports Python 3. + + +# Apache 2 Open Source License +mail-parser can be downloaded, used, and modified free of charge. It is available under the Apache 2 license. + +If you want support the project: + + +[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VEPXYP745KJF2) + + + + + + +# mail-parser on Web + - [Splunk app](https://splunkbase.splunk.com/app/4129/) + - [FreeBSD port](https://www.freshports.org/mail/py-mail-parser/) + - [Arch User Repository](https://aur.archlinux.org/packages/mailparser/) + + +# Description + +mail-parser takes as input a raw email and generates a parsed object. The properties of this object are the same name of +[RFC headers](https://www.iana.org/assignments/message-headers/message-headers.xhtml): + + - bcc + - cc + - date + - delivered_to + - from\_ (not `from` because is a keyword of Python) + - message_id + - received + - reply_to + - subject + - to + +There are other properties to get: + - body + - body html + - body plain + - headers + - attachments + - sender IP address + - to domains + - timezone + +The `attachments` property is a list of objects. Every object has the following keys: + - binary: it's true if the attachment is a binary + - charset + - content_transfer_encoding + - content-disposition + - content-id + - filename + - mail_content_type + - payload: attachment payload in base64 + +To get custom headers you should replace "-" with "\_". +Example for header `X-MSMail-Priority`: + +``` +$ mail.X_MSMail_Priority +``` + +The `received` header is parsed and splitted in hop. The fields supported are: + - by + - date + - date_utc + - delay (between two hop) + - envelope_from + - envelope_sender + - for + - from + - hop + - with + + +mail-parser can detect defect in mail: + - [defects](https://docs.python.org/2/library/email.message.html#email.message.Message.defects): mail with some not compliance RFC part + +All properties have a JSON and raw property that you can get with: + - name_json + - name_raw + +Example: + +``` +$ mail.to (Python object) +$ mail.to_json (JSON) +$ mail.to_raw (raw header) +``` + +The command line tool use the JSON format. + +## Defects +These defects can be used to evade the antispam filter. An example are the mails with a malformed boundary that can hide a not legitimate epilogue (often malware). +This library can take these epilogues. + + +# Authors + +## Main Author +**Fedele Mantuano**: [LinkedIn](https://www.linkedin.com/in/fmantuano/) + + +# Installation + +Clone repository + +``` +git clone https://github.com/SpamScope/mail-parser.git +``` + +and install mail-parser with `setup.py`: + +``` +$ cd mail-parser + +$ python setup.py install +``` + +or use `pip`: + +``` +$ pip install mail-parser +``` + +# Usage in a project + +Import `mailparser` module: + +``` +import mailparser + +mail = mailparser.parse_from_bytes(byte_mail) +mail = mailparser.parse_from_file(f) +mail = mailparser.parse_from_file_msg(outlook_mail) +mail = mailparser.parse_from_file_obj(fp) +mail = mailparser.parse_from_string(raw_mail) +``` + +Then you can get all parts + +``` +mail.attachments: list of all attachments +mail.body +mail.date: datetime object in UTC +mail.defects: defect RFC not compliance +mail.defects_categories: only defects categories +mail.delivered_to +mail.from_ +mail.get_server_ipaddress(trust="my_server_mail_trust") +mail.headers +mail.mail: tokenized mail in a object +mail.message: email.message.Message object +mail.message_as_string: message as string +mail.message_id +mail.received +mail.subject +mail.text_plain: only text plain mail parts in a list +mail.text_html: only text html mail parts in a list +mail.text_not_managed: all not managed text (check the warning logs to find content subtype) +mail.to +mail.to_domains +mail.timezone: returns the timezone, offset from UTC +mail.mail_partial: returns only the mains parts of emails +``` + +It's possible to write the attachments on disk with the method: + +``` +mail.write_attachments(base_path) +``` + +# Usage from command-line + +If you installed mailparser with `pip` or `setup.py` you can use it with command-line. + +These are all swithes: + +``` +usage: mailparser [-h] (-f FILE | -s STRING | -k) + [-l {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}] [-j] [-b] + [-a] [-r] [-t] [-dt] [-m] [-u] [-c] [-d] [-o] + [-i Trust mail server string] [-p] [-z] [-v] + +Wrapper for email Python Standard Library + +optional arguments: + -h, --help show this help message and exit + -f FILE, --file FILE Raw email file (default: None) + -s STRING, --string STRING + Raw email string (default: None) + -k, --stdin Enable parsing from stdin (default: False) + -l {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}, --log-level {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET} + Set log level (default: WARNING) + -j, --json Show the JSON of parsed mail (default: False) + -b, --body Print the body of mail (default: False) + -a, --attachments Print the attachments of mail (default: False) + -r, --headers Print the headers of mail (default: False) + -t, --to Print the to of mail (default: False) + -dt, --delivered-to Print the delivered-to of mail (default: False) + -m, --from Print the from of mail (default: False) + -u, --subject Print the subject of mail (default: False) + -c, --receiveds Print all receiveds of mail (default: False) + -d, --defects Print the defects of mail (default: False) + -o, --outlook Analyze Outlook msg (default: False) + -i Trust mail server string, --senderip Trust mail server string + Extract a reliable sender IP address heuristically + (default: None) + -p, --mail-hash Print mail fingerprints without headers (default: + False) + -z, --attachments-hash + Print attachments with fingerprints (default: False) + -sa, --store-attachments + Store attachments on disk (default: False) + -ap ATTACHMENTS_PATH, --attachments-path ATTACHMENTS_PATH + Path where store attachments (default: /tmp) + -v, --version show program's version number and exit + +It takes as input a raw mail and generates a parsed object. +``` + +Example: + +```shell +$ mailparser -f example_mail -j +``` + +This example will show you the tokenized mail in a JSON pretty format. + +From [raw mail](https://gist.github.com/fedelemantuano/5dd702004c25a46b2bd60de21e67458e) to +[parsed mail](https://gist.github.com/fedelemantuano/e958aa2813c898db9d2d09469db8e6f6). + + +# Exceptions + +Exceptions hierarchy of mail-parser: + +``` +MailParserError: Base MailParser Exception +| +\── MailParserOutlookError: Raised with Outlook integration errors +| +\── MailParserEnvironmentError: Raised when the environment is not correct +| +\── MailParserOSError: Raised when there is an OS error +| +\── MailParserReceivedParsingError: Raised when a received header cannot be parsed +``` + + + + +%package help +Summary: Development documents and examples for mail-parser +Provides: python3-mail-parser-doc +%description help +[](https://badge.fury.io/py/mail-parser) +[](https://travis-ci.org/SpamScope/mail-parser) +[](https://coveralls.io/github/SpamScope/mail-parser?branch=develop) +[](https://bettercodehub.com/) +[](https://microbadger.com/images/fmantuano/spamscope-mail-parser "Get your own image badge on microbadger.com") + + + +# mail-parser + +mail-parser is not only a wrapper for [email](https://docs.python.org/2/library/email.message.html) Python Standard Library. +It give you an easy way to pass from raw mail to Python object that you can use in your code. +It's the key module of [SpamScope](https://github.com/SpamScope/spamscope). + +mail-parser can parse Outlook email format (.msg). To use this feature, you need to install `libemail-outlook-message-perl` package. For Debian based systems: + +``` +$ apt-get install libemail-outlook-message-perl +``` + +For more details: + +``` +$ apt-cache show libemail-outlook-message-perl +``` + +mail-parser supports Python 3. + + +# Apache 2 Open Source License +mail-parser can be downloaded, used, and modified free of charge. It is available under the Apache 2 license. + +If you want support the project: + + +[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VEPXYP745KJF2) + + + + + + +# mail-parser on Web + - [Splunk app](https://splunkbase.splunk.com/app/4129/) + - [FreeBSD port](https://www.freshports.org/mail/py-mail-parser/) + - [Arch User Repository](https://aur.archlinux.org/packages/mailparser/) + + +# Description + +mail-parser takes as input a raw email and generates a parsed object. The properties of this object are the same name of +[RFC headers](https://www.iana.org/assignments/message-headers/message-headers.xhtml): + + - bcc + - cc + - date + - delivered_to + - from\_ (not `from` because is a keyword of Python) + - message_id + - received + - reply_to + - subject + - to + +There are other properties to get: + - body + - body html + - body plain + - headers + - attachments + - sender IP address + - to domains + - timezone + +The `attachments` property is a list of objects. Every object has the following keys: + - binary: it's true if the attachment is a binary + - charset + - content_transfer_encoding + - content-disposition + - content-id + - filename + - mail_content_type + - payload: attachment payload in base64 + +To get custom headers you should replace "-" with "\_". +Example for header `X-MSMail-Priority`: + +``` +$ mail.X_MSMail_Priority +``` + +The `received` header is parsed and splitted in hop. The fields supported are: + - by + - date + - date_utc + - delay (between two hop) + - envelope_from + - envelope_sender + - for + - from + - hop + - with + + +mail-parser can detect defect in mail: + - [defects](https://docs.python.org/2/library/email.message.html#email.message.Message.defects): mail with some not compliance RFC part + +All properties have a JSON and raw property that you can get with: + - name_json + - name_raw + +Example: + +``` +$ mail.to (Python object) +$ mail.to_json (JSON) +$ mail.to_raw (raw header) +``` + +The command line tool use the JSON format. + +## Defects +These defects can be used to evade the antispam filter. An example are the mails with a malformed boundary that can hide a not legitimate epilogue (often malware). +This library can take these epilogues. + + +# Authors + +## Main Author +**Fedele Mantuano**: [LinkedIn](https://www.linkedin.com/in/fmantuano/) + + +# Installation + +Clone repository + +``` +git clone https://github.com/SpamScope/mail-parser.git +``` + +and install mail-parser with `setup.py`: + +``` +$ cd mail-parser + +$ python setup.py install +``` + +or use `pip`: + +``` +$ pip install mail-parser +``` + +# Usage in a project + +Import `mailparser` module: + +``` +import mailparser + +mail = mailparser.parse_from_bytes(byte_mail) +mail = mailparser.parse_from_file(f) +mail = mailparser.parse_from_file_msg(outlook_mail) +mail = mailparser.parse_from_file_obj(fp) +mail = mailparser.parse_from_string(raw_mail) +``` + +Then you can get all parts + +``` +mail.attachments: list of all attachments +mail.body +mail.date: datetime object in UTC +mail.defects: defect RFC not compliance +mail.defects_categories: only defects categories +mail.delivered_to +mail.from_ +mail.get_server_ipaddress(trust="my_server_mail_trust") +mail.headers +mail.mail: tokenized mail in a object +mail.message: email.message.Message object +mail.message_as_string: message as string +mail.message_id +mail.received +mail.subject +mail.text_plain: only text plain mail parts in a list +mail.text_html: only text html mail parts in a list +mail.text_not_managed: all not managed text (check the warning logs to find content subtype) +mail.to +mail.to_domains +mail.timezone: returns the timezone, offset from UTC +mail.mail_partial: returns only the mains parts of emails +``` + +It's possible to write the attachments on disk with the method: + +``` +mail.write_attachments(base_path) +``` + +# Usage from command-line + +If you installed mailparser with `pip` or `setup.py` you can use it with command-line. + +These are all swithes: + +``` +usage: mailparser [-h] (-f FILE | -s STRING | -k) + [-l {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}] [-j] [-b] + [-a] [-r] [-t] [-dt] [-m] [-u] [-c] [-d] [-o] + [-i Trust mail server string] [-p] [-z] [-v] + +Wrapper for email Python Standard Library + +optional arguments: + -h, --help show this help message and exit + -f FILE, --file FILE Raw email file (default: None) + -s STRING, --string STRING + Raw email string (default: None) + -k, --stdin Enable parsing from stdin (default: False) + -l {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}, --log-level {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET} + Set log level (default: WARNING) + -j, --json Show the JSON of parsed mail (default: False) + -b, --body Print the body of mail (default: False) + -a, --attachments Print the attachments of mail (default: False) + -r, --headers Print the headers of mail (default: False) + -t, --to Print the to of mail (default: False) + -dt, --delivered-to Print the delivered-to of mail (default: False) + -m, --from Print the from of mail (default: False) + -u, --subject Print the subject of mail (default: False) + -c, --receiveds Print all receiveds of mail (default: False) + -d, --defects Print the defects of mail (default: False) + -o, --outlook Analyze Outlook msg (default: False) + -i Trust mail server string, --senderip Trust mail server string + Extract a reliable sender IP address heuristically + (default: None) + -p, --mail-hash Print mail fingerprints without headers (default: + False) + -z, --attachments-hash + Print attachments with fingerprints (default: False) + -sa, --store-attachments + Store attachments on disk (default: False) + -ap ATTACHMENTS_PATH, --attachments-path ATTACHMENTS_PATH + Path where store attachments (default: /tmp) + -v, --version show program's version number and exit + +It takes as input a raw mail and generates a parsed object. +``` + +Example: + +```shell +$ mailparser -f example_mail -j +``` + +This example will show you the tokenized mail in a JSON pretty format. + +From [raw mail](https://gist.github.com/fedelemantuano/5dd702004c25a46b2bd60de21e67458e) to +[parsed mail](https://gist.github.com/fedelemantuano/e958aa2813c898db9d2d09469db8e6f6). + + +# Exceptions + +Exceptions hierarchy of mail-parser: + +``` +MailParserError: Base MailParser Exception +| +\── MailParserOutlookError: Raised with Outlook integration errors +| +\── MailParserEnvironmentError: Raised when the environment is not correct +| +\── MailParserOSError: Raised when there is an OS error +| +\── MailParserReceivedParsingError: Raised when a received header cannot be parsed +``` + + + + +%prep +%autosetup -n mail-parser-3.15.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-mail-parser -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 3.15.0-1 +- Package Spec generated |